2011-09-26 33 views
11

Tôi hiện đang thiết kế một ứng dụng diễn đàn đơn giản. Nó chủ yếu được cung cấp bởi jQuery/AJAX và tải mọi thứ trên cùng một trang; tuy nhiên, tôi biết rằng đôi khi người dùng muốn mở nhiều chủ đề cùng một lúc để xem chúng trong các tab mới khi duyệt một diễn đàn.jQuery: Phát hiện Chuột Nhấp và Mở Mục tiêu trong Tab Mới

Giải pháp của tôi cho điều này là để phát hiện khi nút chuột giữa được nhấp và nút chuột trái được nhấp và thực hiện các hành động khác nhau sau đó. Tôi muốn tải mục tiêu bằng AJAX trong cửa sổ khi nhấn phím trái chuột, nếu không thì tải nó vào một tab mới.

Vấn đề duy nhất của tôi là tôi không biết cách mở một vị trí mục tiêu trong một tab mới với jQuery. Rõ ràng mở các tab mới tại sẽ không được phép, nhưng có cách nào để chỉ định loại hành vi này cho hành động do người dùng tạo không?

Cảm ơn!

Trả lời

15

Xin hãy nhìn mẫu mã. Nó có thể giúp

<script type='text/javascript'> 
    jQuery(function($){ 
     $('a').mousedown(function(event) { 
      switch (event.which) { 
       case 1: 
        //alert('Left mouse button pressed'); 
        $(this).attr('target','_self'); 
        break; 
       case 2: 
        //alert('Middle mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       case 3: 
        //alert('Right mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       default: 
        //alert('You have a strange mouse'); 
        $(this).attr('target','_self"'); 
      } 
     }); 
    }); 
</script> 
+1

Khi nhấp vào liên kết, nó có thay đổi thuộc tính đích trước khi thực hiện hành động không? – Phillip

+0

Có, tôi sẽ thay đổi thuộc tính trước khi hành động. –

+0

tôi muốn khi người dùng nhấp vào liên kết hoặc mở nó một tab mới. Liên kết ẩn nhưng bằng những cách này nó chỉ có thể trên IE ... tôi có thể làm gì? –

0

Tác vụ mặc định của nút chuột giữa là để mở trong tab mới.

Bạn có thể đặt thuộc tính đích siêu kết nối thành _blank để mở tab mới.

<a href="#link" target="_blank">Link</a> 

Bạn cũng có thể tham khảo cho câu hỏi này How to distinguish between left and right mouse click with jQuery

+0

Tôi cần chỉnh sửa câu hỏi của mình và làm rõ hơn. Tôi đang tìm cách tải mục tiêu bằng AJAX khi nhấp chuột trái và mở trong tab mới khi nhấp chuột giữa. – Phillip

1
$('#element').mousedown(function(event) { 
      if(event.which == 3) { // right click 
       window.open("newlocation.html",""); 
      } 
    }); 

Xem nó sống http://jsfiddle.net/8CHTm/1/

+0

@Philip Tôi đã thêm một câu đố. – Ehtesham

9
<a href="some url" target="_newtab">content of the anchor</a> 

Trong javascript, bạn có thể sử dụng

$('#element').mousedown(function(event) { 
     if(event.which == 3) { // right click 
      window.open('page.html','_newtab'); 
     } 
}) 
+0

Ah tôi thấy, không biết tôi có thể đặt thuộc tính đích trên window.open. Sẽ cung cấp cho một thử. Cảm ơn! – Phillip

+0

bạn được chào đón ...................: D: D: D: D –

5

Bạn cũng cần phải xem xét rằng ctrl-click và cmd nhấp chuột là được sử dụng để mở các tab mới (trong windows/linux và mac tương ứng. Vì vậy, đây sẽ là một giải pháp hoàn chỉnh hơn:

jQuery.isClickEventRequestingNewTab = function(clickEvent) { 
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2; 
}; 
-1

Vui lòng thử "_newTab" thay vì "_blank"

window.open (URL "_newtab");

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