2010-04-22 59 views
3

CTRL +點擊鏈接打開一個新窗口時,是否可以抑制默認的IE 7功能?如果是這樣,怎麼樣?IE 7 CTRL +點擊打開一個新窗口 - 如何抑制它?

謝謝!

+0

我要說的是,您需要一個非常好的理由來重新定義用戶期望以某種方式工作的操作。 – 2010-04-22 20:58:43

+0

並不打開一個新的TAB – Midhat 2010-04-22 20:59:51

+0

它在IE8中;這也是Firefox和Chrome的默認行爲 - shift-click打開一個新窗口,ctrl-click打開一個新選項卡。其他人可能也是如此。 – GalacticCowboy 2010-04-22 21:01:29

回答

7

有沒有辦法抑制按Ctrl +與點擊Internet Explorer中沒有子元素的鏈接 - 如果按Ctrl鍵被按下後,onclick不會觸發事件在所有的鏈接點擊。看起來微軟不希望你改變這個功能,因爲擔心你可能會混淆用戶。

在發佈此答案之前,我搜索了某種官方確認/解釋,但不幸的是,這個限制沒有在MSDN上的文檔中列出,Google也沒有幫助。儘管如此,它仍然是正確的,自己嘗試一下:

<a href="#" onclick="alert('Hello');">Hello</a> 

你會發現,一個按Ctrl +點擊鏈接不會拋出警告框。根據pinkgothic,分配一個子元素到鏈接將解決這個問題。例如:

<a href="#" onclick="alert('Hello');"><span>Hello</span></a> 

這工作,因爲點擊觸發的<span>元件首先,傳播到<a>元素之前。

+0

是的,我已經計算好了......我將用樹控件的開箱行爲並將其稱爲一天 – sarsnake 2010-04-22 22:36:33

+0

有趣的是,'ctrl + click'的'Hello'工作正常(至少在IE9中)。顯然這只是'事件發生的起點。一個''就足以讓它失去。 – pinkgothic 2012-06-02 12:12:29

+0

@pinkgothic:這聽起來很有希望,如果它也適用於舊版本的IE。 – 2012-06-02 13:59:27

1

jQuery event.preventDefault()方法或類似方法可以覆蓋您控制的頁面上的默認行爲。

因爲瀏覽器及其行爲是「他們的」行爲,所以改變用戶瀏覽器的行爲通常是不好的做法。

+0

我打算在樹中的節點上做。他們是supp。可點擊但不打開鏈接。我不打算爲傳統鏈接做這件事。 – sarsnake 2010-04-22 21:02:58

0

添加腳本到錨並返回false

<a href='some.htm' onclick='return false;'></a> 

而且它是有效的TreeView中使用的錨,因爲它使樹形更容易獲得。

0

使用jQuery您可以處理CTRL +點擊自己的功能和返回false,例如

$("a").click(function(event){ 
if(event.metaKey || event.ctrlKey){ 
//handle over here 

return false; 
} 

}); 

這個作品在所有瀏覽器包括Mac

1

有同樣的問題,因爲運算和解決它通過賦予錨點href屬性一個'#'和一個附加的data-href屬性以及相應的鏈接位置。 你需要一個點擊處理程序來跟隨鏈接的缺點,也右鍵單擊「在新窗口中打開」不會使用這種方法。

eg: In AnchorTag, Use href and data-ref as: 
<a id="logout" href="#" data-href="${yourPath}"> 

And in javascript, use  
$("#logout").click(function(e) { 
    if(e.ctrlKey) 
e.preventDefault(); 
window.location = $(e.target).attr("data-href"); 
}); 
1

將鏈接文本包裹在範圍內。像這樣:

<a href="test.html"><span>click here!</span></a>