Tại sao nhấp CTRL không mở một số liên kết trong tab mới?


18

Đôi khi trong khi duyệt, tôi sẽ nhấp vào một liên kết để mở nó trong một tab mới. Tuy nhiên, thay vì mở trong một tab mới, nó được nhấp và duyệt trong tab hiện tại như thể tôi đã nhấp vào nó bình thường mà không giữ ctrl. Tôi khẳng định Tôi đang giữ ctrl hoàn toàn và không có lỗi với bàn phím hoặc chuột.

Đôi khi, một tab mới sẽ được mở bằng liên kết nhưng tab hiện tại cũng sẽ duyệt đến liên kết đồng thời.


3
Có lẽ chúng không phải là các liên kết thực tế, theo nghĩa là có thể "liên kết" đang sử dụng một onclickthao tác có thể gây rối với nhấp chuột ctrl +. Bạn có thể cho một ví dụ cụ thể? meta.stackoverflow.com/questions/276138/
Mạnh

@imtheman Điểm tuyệt vời, tuy nhiên, nó dường như không phải là trường hợp, ít nhất là trong các ví dụ tôi đã thấy. Tôi biết điều này bởi vì tôi luôn di chuột qua liên kết trước để xác minh rằng nó đang hiển thị một URL trong thanh trạng thái. Một ví dụ là ở đây: nationaljournal.com/white-house/... Trong / bar cột bên tay trái, các liên kết đến những câu chuyện khác dường như URL riêng của họ, xác nhận qua nhảy thậm chí đến vị trí của họ trong nguồn, tuy nhiên, doesn ctrl-click Thay vào đó, hoạt động như thể ctrl không được tổ chức.
Coldblackice

Nếu bạn nhìn vào mã nguồn của trang web đó, bạn sẽ thấy điều này cho một trong các liên kết:<a class="primary" href="/superuser//congress" onclick="var x=&quot;.tl(&quot;;s_objectID=&quot;http://www.nationaljournal.com/congress_1&quot;;return this.s_oc?this.s_oc(e):true">Congress</a>
imtheman

1
Mặc dù nó có một hrefthuộc tính, nó bị ghi đè bởi sự kiện onclick.
imtheman

1
Tôi đã viết một addon Firefox để khắc phục vấn đề này. github.com/danielnixon/link-fixer
danielnixon

Câu trả lời:


8

JavaScript đằng sau hậu trường

Điều này xảy ra khi các nhà phát triển của các trang web đó chặn các nhấp chuột bằng JavaScript và thực hiện các yêu cầu mạng không đồng bộ bên trong thiết bị chặn, có khả năng theo dõi các nhấp chuột của bạn. Khi cuộc gọi mạng async trả về, JS thực hiện chuyển hướng lập trình bằng cách sử dụng một cái gì đó như:window.location.href = url;

Chuyển hướng lập trình này sẽ luôn tải trang trong cùng một tab, ngay cả khi bạn giữ Ctrl( Cmdtrên Mac).

Sử dụng MiddleMouse để ghi đè

Nhấp vào nút giữa trên chuột hoặc chọn 'mở trong tab mới' từ menu ngữ cảnh sẽ bỏ qua hoàn toàn mã JavaScript chặn và sẽ mở một liên kết như thể hoàn toàn không có mã JavaScript.


Điều này không hoàn toàn chính xác. Mặc dù một số thiết kế mã cho phép một trình kích hoạt thay thế buộc trang phải mở trong một tab mới, các thiết kế mã khác ngăn chặn điều này. Điều này phổ biến hơn trong các trang web có nội dung động không có "trang" thông thường và thay vào đó tạo ra các trang khi các nút được nhấp. Trong trường hợp này, không có "liên kết" thực sự trong trang, mà là các nút kích hoạt hành vi giống như một ứng dụng.
music2myear 15/03/18

6

Tôi đã viết một tiện ích bổ sung Firefox (nhàm chán) có tên là trình sửa lỗi liên kết để sửa lỗi này. Bạn có thể cài đặt từ addons.mozilla.org . Nó yêu cầu Firefox 48.0 trở lên.

Trích dẫn bản thân:

Hành vi mặc định của ctrl + nhấp, shift + nhấp và cmd + nhấp khi nhấp vào liên kết là mở liên kết trong tab mới hoặc cửa sổ mới. Hành vi này đôi khi bị phá vỡ bởi các nhà phát triển bất cẩn. Tiện ích bổ sung này khôi phục hành vi mặc định, đảm bảo các khóa modifer luôn được tôn trọng.

Sau khi cài đặt, không có gì khác bạn cần làm. Bạn có thể ctrl + nhấp vào bất kỳ liên kết nào và nó sẽ mở trong một tab mới. Nó cũng sẽ giải quyết sự thay đổi của vấn đề bạn mô tả trong đoạn thứ hai của bạn.


1
Xin chào Daniel, trong khi thật tuyệt khi bạn đã viết một cái gì đó để giải quyết vấn đề này, bạn có thể đọc cách giới thiệu phần mềm trong câu trả lời , đặc biệt là các phần in đậm và cập nhật câu trả lời của bạn không? Cảm ơn :)
bertieb

3

Hãy lấy liên kết này làm ví dụ:

<a href="test.php" onclick="someFunction(this); return false;">Test</a>

Trong hreftrường hợp này, thuộc tính này đang tạo một liên kết giả để dễ đọc (nó cũng sẽ cho phép liên kết hoạt động ngay cả khi JavaScript bị tắt). Lý do cho điều này là vì onclickthuộc tính luôn chạy đầu tiên. Các trang web lớn như Google làm điều này để theo dõi các nhấp chuột và cố gắng ngăn người dùng truy cập các trang web phần mềm độc hại. Vì lý do này, vì một số lý do Ctrl+ Nhấp chuột không hoạt động. Tuy nhiên, nếu bạn sử dụng nút giữa trên chuột, điều đó hầu như luôn hoạt động.


1
Đang cố gắng tìm một con chuột giữa trên Mac .
Eduard

Tôi đã viết một addon Firefox để khắc phục vấn đề này. github.com/danielnixon/link-fixer
danielnixon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.