2017-03-07 179 views
2

這是我的代碼捕獲「在新標籤中打開鏈接」和「在新窗口中打開鏈接」事件

<a href="javascript:void(0)" onclick="myFun('www.google.com');" onmousedown="myFun('www.google.com');"> 

每當我點擊這個鏈接我的函數被使用onclick事件呼籲。我添加了onmousedown事件右鍵捕獲。但問題是,在選擇「在新標籤中打開」「在新窗口中打開」選項之前調用此功能。當用戶使用右鍵單擊並在選擇正確的單擊選項之前,函數被調用。我不想要這種行爲。當用戶實際選擇「在新標籤中打開鏈接」「在新窗口中打開鏈接」選項時,我想調用此功能。

我不想在狀態欄中顯示鏈接,也不想讓用戶複製鏈接地址。這就是爲什麼我使用onclick和onmousedown事件。

請幫我一把。由於

+0

這些是瀏覽器事件,而不是網頁事件 – Cruiser

+0

有沒有什麼告訴你用戶選擇這些。 – epascarello

+0

我不能只使用oncontextmenu事件。如果我這樣做,它會給我一個例外 - JSPG0227E:翻譯/abc.jsp時捕獲的異常:/abc.jsp(160,10) - > JSPG0123E:無法找到tag屬性的標籤屬性信息oncontextmenu – Nitesh

回答

0

這聽起來像你正在尋找這樣的事情,一旦上下文菜單中啓動,這將改變鏈接:

function myFun2(url) { 
    linkEl.href = url; 
} 

然後分配a元素的ID(即「LINKEL」),除去onmousedown處理程序,並指定一個oncontextmenu處理程序,如:當上下文菜單啓動

oncontextmenu="myFun2('www.google.com');" 

然後,鏈接會發生變化,因此,如果「打開在新標籤」或「在新窗口打開」選擇,它會去Google (在這個例子中),而不是之前設置的鏈接。

+0

: - In我的例子我想發送要打開的鏈接。我正在做的是,我想將該鏈接傳遞給一個JS函數,並希望使用JS創建一個表單。然後使用form.submit()提交表單; 我的網址包含一些我不想在地址欄中顯示的參數。我正在創建表單並將其提交給POST請求。 – Nitesh

0

您遇到的問題是左右兩邊都是用onclick函數處理的。另一種可能性是使用oncontextmenu(如提到here)。

但我認爲你需要處理右鍵單擊和左鍵單擊不同,所以onclick是正確的事件,只需檢查它是主(0)還是次(2)mouseButton(請參閱here)。所以你的解決方案可能是這樣的:

myFun(link) { 
    var buttonPressed = instanceOfMouseEvent.button; 
    if (buttonPressed == 0) { 
     //Handle normal click 
    } else if (buttonPressed == 2) { 
     //Handle right click 
    } 
} 
+0

我可以找出正確的點擊事件。但是,當用戶實際選擇「在新標籤中打開」或「在新窗口中打開」選項時,我想查找該事件。在選擇這些選項之前,我的功能被觸發。因爲我是我的代碼能夠找到右鍵單擊事件。我不想要它。在選擇選項 – Nitesh

+1

@NiteshAarne後,我們的功能應該會觸發,您可能想查看[構建您自己的上下文菜單](https://www.sitepoint.com/building-custom-right-click-context-menu-javascript/) 。這樣你可以更好地控制發生的事情。 – freginold

+0

在我的示例中,我想發送要打開的鏈接。我正在做的是,我想將該鏈接傳遞給一個JS函數,並希望使用JS創建一個表單。然後使用form.submit()提交表單;我的網址包含一些我不想在地址欄中顯示的參數。我正在創建表單並將其提交給POST請求。 – Nitesh