Ví dụ về những gì tôi muốn làm: Trên Facebook, nhấp vào liên kết để mở liên kết trong tab hiện tại sẽ kích hoạt một số Javascript thay vì mở liên kết. Tuy nhiên, mở nó trong một tab mới (bằng cách nhấp chuột phải hoặc giữ Ctrl/Cmd) sẽ mở liên kết mà không cần gọi bất kỳ Javascript nào.Phân biệt liên kết được mở trong tab hiện tại so với tab mới
Tôi muốn thực hiện tương tự với các liên kết của mình (có hành vi liên kết phụ thuộc vào mục tiêu). Tôi có trình xử lý sự kiện onclick return false;
để tránh mở liên kết; nhưng điều này khiến Ctrl + nhấp chuột không mở được liên kết. Làm thế nào để đạt được điều này?
CHỈNH SỬA: Tôi không muốn liên kết để mở mạnh trong cửa sổ mới. IF một liên kết được mở trong một cửa sổ mới, tôi muốn nó theo sau href
như bình thường. Tuy nhiên, IF liên kết được mở trong cửa sổ hiện tại, thay vì theo liên kết trong cửa sổ hiện tại, tôi muốn chạy Javascript.
Facebook thực hiện việc này để mở một hình ảnh trong cửa sổ bật lên "rạp hát" nếu bạn mở nó trong cửa sổ hiện tại và mở nó trong một trang đầy đủ nếu bạn mở nó trong một cửa sổ mới.
Lưu ý rằng việc chụp sự kiện click
trên các liên kết và sử dụng preventDefault()
hoặc return false
làm cho Cmd + Nhấp chuột (mở trong tab mới) thành không thành công. Trong mọi trường hợp, điều này sẽ làm việc bất kể như thế nào liên kết được mở ra - bấm, phím Enter vv
EDIT 2: Có vẻ như rằng hashchange
/HTML5 pushState là cách chính xác để đi về vấn đề này
Bạn có muốn liên kết để luôn mở trong cửa sổ mới? – ShankarSangoli
bạn không thể thay đổi mục tiêu thành '_blank' trên tất cả các neo? – ZeroDivide