2011-12-20 29 views
0

我有像這樣防止默認錨行爲IE7沒有庫/框架

<a onclick="return false;" href="http://somesite.com">my link</a> 

在Firefox,Chrome和Safari這個鏈接一個鏈接,當你點擊它沒有做任何事情。在IE7中,鏈接仍然會到http://somesite.com。有沒有辦法來防止這種情況發生?

我沒有使用任何框架像jquery,只是原始的JavaScript。

回答

1

試試這個:

<a onclick="window.event && (event.returnValue = false); return false;" href="http://somesite.com">hi</a> 
+0

這很好,但我不認爲你需要第二個返回false;謝謝 – Mike 2011-12-20 20:34:09

+1

這隻會在IE中起作用,並在其他瀏覽器中引發「未定義的事件」 - 錯誤。 – Bergi 2011-12-20 20:39:14

+0

我已將上述評論確認回繪圖板。 – Mike 2011-12-20 20:41:33

0

根據一些網站,event.returnValue = false;應該有所幫助。當然,其他瀏覽器會拋出一個錯誤,因爲它們不支持returnValue,所以你應該檢查它。 This article甚至建議取消href屬性上單擊:-)

故障保存應

<a onclick="...; if (window.event && typeof window.event.returnValue == 'boolean') return window.event.returnValue = false; return false;" href="http://somesite.com">hi</a> 

使用JS添加的事件監聽,你也可以使用符合標準的瀏覽器event.preventDefault();其中事件賦予偵聽器函數的參數。

+0

這不會在IE7中輸入if語句 – Mike 2011-12-20 20:47:31

+0

爲什麼不能?您是否用您的操作代碼替換省略號(分別在沒有操作時將其刪除)? – Bergi 2011-12-20 20:51:45

+0

其他瀏覽器如果不支持'returnValue'則不會拋出錯誤 - 語句'event.returnValue = false;'只會在事件對象上創建一個新屬性(如果它尚不存在),並且不使用該屬性的瀏覽器將忽略它。 – nnnnnn 2011-12-20 20:57:25

0

一個簡單的"return false;"一直在IE中工作。我沒有可用的IE7進行測試,但它在IE8中對我很有用,而且我確定它曾經在IE6中工作。

不過,你可以嘗試像以下:

<a onclick="return cancelDefault();" href="http://somesite.com">my link</a> 

<script> 
function cancelDefault(e) { 
    if (!e) e = window.event; 
    e.returnValue = false; 
    return false; 
} 
</script> 

的瀏覽器不支持returnValue將其忽略:如果您在事件創建該名稱的新的財產,他們不介意目的。

+0

這部作品在IE而不是Firefox的... – Mike 2011-12-20 21:02:04

+0

還,返回​​false;在IE8 – Mike 2011-12-20 21:23:54

+0

不能很好地工作,我說,它在IE8工作對我來說(我張貼我的答案之前,測試它)。 – nnnnnn 2011-12-20 21:49:32

0

我想出了這個(與其他一些答案的靈感)

<script> 
function stopIEAnchor(){ 
    if (typeof window.event !== "undefined") 
     return window.event.returnValue = false; 

    return false; 
} 
</script> 

<a onclick="return stopIEAnchor()" href="http://somesite.com">link</a> 

我將保持這個問題開了一段時間,看看我們是否能得到了解決或輸入。