2011-08-10 39 views
9

Làm cách nào để tắt/xóa tùy chọn 'Mở liên kết trong tab mới' trong trình đơn nhấp chuột phải của trình duyệt? Nếu điều này là không thể với javascript vv sau đó là có một cách để sửa đổi những gì xảy ra khi người dùng nhấp vào liên kết này, ví dụ, hiển thị một cảnh báo hoặc ngăn chặn các tab tải ..?Làm cách nào để vô hiệu hóa 'Mở liên kết trong tab mới' trong trình duyệt?

+0

Nói chung, bạn không nên cố gắng làm suy yếu ý định của người dùng, ngay cả khi đó không phải là luồng mà bạn đang hướng đến.Ngoài ra, bạn có thể làm cho href "#" và sử dụng trình xử lý 'onclick' để thực sự thực hiện chuyển đổi trang, do đó loại bỏ khả năng của người dùng sử dụng chức năng đó. – ghayes

+3

Tại sao bạn muốn can thiệp vào trình duyệt của người dùng như vậy? Nó sẽ được lên đến ME tab nào liên kết của bạn mở ra. – Amy

+1

@Inuyasha Ứng dụng của tôi hiện hiển thị lỗi nếu liên kết được mở trong tab mới. Nó được thiết kế để tải nội dung vào một div trên cùng một trang. Nếu đây không phải là trường hợp thì hãy tin tôi rằng tôi sẽ không muốn "can thiệp". – grai

Trả lời

3

Đã giải quyết vấn đề chính ngay bây giờ, khá dễ dàng khi nó bật ra chỉ bằng cách chuyển chuỗi truy vấn của href đến một hàm ajax.

Tôi có lẽ đã giải thích trong câu hỏi của mình rằng những gì tôi muốn chỉ được dự định là một biện pháp tạm thời. Dù sao cảm ơn cho tất cả các ý kiến.

0

Tôi không chắc chắn lý do tại sao một số câu hỏi của bạn sẽ giảm bớt, những gì bạn cần cho google là cách chiếm đoạt các sự kiện bằng javascript. Bạn có thể hiển thị cảnh báo khi nhấp vào một liên kết và ngừng hoạt động. jQuery là một bộ công cụ JS populat và có một phương pháp để ngăn chặn các sự kiện mặc định trên một phần tử, bằng tiếng Anh đơn giản, sử dụng jQuery bạn có thể ngăn chặn một siêu liên kết làm việc và hiển thị cảnh báo. Liên kết này http://api.jquery.com/event.preventDefault/ có thể giúp bạn thêm. Về việc vô hiệu hóa menu ngữ cảnh xuất hiện khi nhấp chuột phải vào trang web, điều đó rất có thể. Tôi không phải là một ninja JS vì vậy không thể bình luận nếu bạn có thể loại bỏ một mục từ menu ngữ cảnh nhưng IMO, nó không nên được có thể.

+1

điều này sẽ không hoạt động khi bạn nhấp vào nút giữa chuột hoặc giữ CTRL và nhấp vào liên kết, cách ngăn chặn những trường hợp này? – Pars

6

Khả năng mở liên kết trong tab/cửa sổ mới là chức năng gốc của nhiều trình duyệt. Nếu bạn không muốn cho phép loại hoạt động này, thì bạn cần thông báo cho trình duyệt biết rằng liên kết của bạn không thực sự là liên kết. Cách dễ nhất để làm như vậy là xóa thuộc tính href khỏi phần tử a của bạn.

HTML:

<a href="http://google.com">Can be opened in new tab/window</a> 
<a>Cannot be opened in new tab/window</a> 

Bây giờ có một số điều khác mà các trình duyệt có thể làm cho bạn theo mặc định khi nó thấy một liên kết. Nếu bạn chưa xác định bất kỳ kiểu dáng nào của các yếu tố a, có khả năng là liên kết giả giả mới lạ của bạn sẽ không xuất hiện với liên kết phông chữ, màu sắc, con trỏ và gạch dưới. Bạn có thể tiếp tục và làm điều đó một cách dễ dàng đủ.

CSS:

a { 
    color: blue; 
    cursor: pointer; 
    text-decoration: underline; 
} 

Đó hy vọng trả lời câu hỏi về cách bạn vô hiệu hóa/loại bỏ các 'Mở liên kết trong tab mới' tùy chọn trong menu chuột phải của trình duyệt. Đối với một số tín dụng thêm mặc dù tôi sẽ giả định rằng bạn có thể muốn các liên kết vẫn hoạt động như một liên kết thường xuyên khi nhấp vào. Vui lòng sử dụng một số JavaScript để thực hiện điều đó. Dưới đây là một ví dụ sử dụng jQuery:

JavaScript:

$("body").on("click", "a[data-href]", function() { 
    var href = $(this).data("href"); 
    if (href) { 
     location.href = href; 
    } 
}); 

Modified Html:

<a href="http://google.com">Can be opened in new tab/window</a> 
<a data-href="http://google.com">Cannot be opened in new tab/window</a> 

Modified CSS:

a[href], a[data-href] { 
    color: blue; 
    cursor: pointer; 
    text-decoration: underline; 
} 

Hy vọng điều này sẽ hữu ích!

Các vấn đề liên quan