2011-10-23 79 views
1

我的瀏覽器(firefox)阻止加載任何彈出窗口,並加載在當前選項卡中打開新窗口的鏈接,除非我明確說我希望鏈接加載到新選項卡或窗口上,並帶有適當的快捷方式(例如中間點擊鏈接,或者點擊按Ctrl +按鈕會導致鏈接在新標籤上打開,並且轉變爲 +左鍵點擊一個新窗口)。JavaScript單擊事件

我想創建一個JavaScript函數f(),它在按下鏈接時運行一些代碼(意味着創建鏈接地址),然後加載創建的鏈接,而不必刪除上述用戶體驗。 現在我所擁有的是類似<a href="javascript:void(0)" onclick="f()"/>的東西,但中間點擊不起作用(它反而加載了網址javascript:void(0)),上述其他功能也沒有。

你有任何想法如何解決我的問題?

謝謝。

回答

4

你試過了window.open('url')嗎?

看到:http://www.javascript-coder.com/window-popup/javascript-window-open.phtml

而且,據我所知,你無法控制的瀏覽器是否在新標籤或新窗口中打開。這是對每個用戶都不同的瀏覽器設置。

您也可以嘗試的onclick取出,並用<a href="javascript:f()"></a>

編輯

好像有問題,使用中單擊與打開新的標籤,而不是執行JavaScript:middle click (new tabs) and javascript links

正如該網站所說,您可以改爲爲元素創建一個id並通過javascript綁定它。

**從該鏈接摘自:

<a href="/non/ajax/display/page" id="thisLink">...</a> 

然後在你的JS,勾鏈接通過它的ID做AJAX調用。請記住,您需要停止冒泡的點擊事件。大多數 框架都內置了一個可以調用的事件殺手(只需在其Event類中查看 )。

下面是jQuery的事件處理和事件殺手:

$("#thisLink").click(function(ev, ob) { 
    alert("thisLink was clicked"); 
    ev.stopPropagation(); 
}); 

沒有jQuery的,它可能是這樣的:

document.getElementById('thisLink').onclick = function(e) 
{ 
    //do someting 
    e.stopPropagation(); 
} 
+0

你想讓我插入window.open('url')?如果它在f()函數內部,我認爲它不會改變中間點擊鏈接打開一個URL爲'javascript:void(0)'的新標籤的事實。 我不想在我自己的瀏覽器旁邊控制任何東西。 我實際上正在嘗試創建一個greasemonkey腳本。 href =「javascript:f()」只是在中間點擊鏈接時導致新選項卡的url爲'javascript:f()'。 – SimonNN

+0

我只是在f()函數中試過了。所以試試這個,看看它是否工作: Link Here f = function(){window.open('url'); } – LordZardeck

+0

如果我中間點擊您描述的鏈接,會導致打開一個新標籤頁,其網址爲javascript:f()。 – SimonNN

0

其他瀏覽器可能會有所不同,但默認情況下的Firefox沒有按不告訴網頁它已被中點擊(除非你設置隱藏的首選項來啓用該功能)。您或許可以根據focus和/或mouseover事件創建解決方法。

+0

這是否意味着,使用Firefox,不可能在加載鏈接之前執行JavaScript代碼,而不會破壞中間點擊的用戶體驗?你在說什麼隱藏的偏好?除非我誤解了你的想法,否則鼠標懸停或焦點不是我正在尋找的東西。 – SimonNN

+0

Firefox中沒有辦法告訴用戶實際上已經中間點擊了鏈接。我的理解是,你只需要代碼來創建鏈接地址。我以爲你可以嘗試使用鼠標懸停或焦點事件來運行該代碼。 – Neil