我不打算開始辯論。#或javascript:void(0)?
如果我們想要使用onClick事件,我們應該以某種方式禁用href來觸發。 - 它是否正確 ?
如果以上是正確的,我認爲javascript:void(0)
具有不觸發滾動行爲的優點。
這些假設是否正確?我不打算搜索嵌合體,但我的任務是尋找一種方式,以跨瀏覽器的方式設置按鈕樣式,沒有任何輔助功能(完全沒有),沒有黑客和怪癖。
我不打算開始辯論。#或javascript:void(0)?
如果我們想要使用onClick事件,我們應該以某種方式禁用href來觸發。 - 它是否正確 ?
如果以上是正確的,我認爲javascript:void(0)
具有不觸發滾動行爲的優點。
這些假設是否正確?我不打算搜索嵌合體,但我的任務是尋找一種方式,以跨瀏覽器的方式設置按鈕樣式,沒有任何輔助功能(完全沒有),沒有黑客和怪癖。
如果您想阻止遵循該鏈接,您應該在您的點擊處理程序(IE中的event.returnValue = false;
)中添加event.preventDefault()
。
看來你剛剛在看起來的鏈接,而不是其功能(或目的)。如果是這樣,您可以使用帶有CSS的button
來相應地設置它。
應該避免與href內容#
或javascript:void(0)
有真正的聯繫。
進一步解釋:
使用鏈接只是有一些「點擊」是不好的。鏈接具有明顯的語法意義。由於您可以爲每個元素分配一個click
事件處理程序,因此您可以使用任何其他元素。
語法上最正確的一個(imo)將是button
,因爲您仍然可以使用tab
導航它們。你可以用CSS樣式,使它們看起來像一個鏈接,如果你想(see this example)
現在關於防止默認動作:
假設你有一個正確的href
值,你正常鏈接要攔截點擊。在
link.addEventListener('click', function(event){
// some code
event.preventDefault();
}, false);
使用event.preventDefault()
分配給該元素的單擊處理程序,如防止默認操作,它在一個鏈接的情況下,下面的URL。
(上面的代碼是W3C兼容的瀏覽器的例子,IE是有點不同)
如果有到具有href,使用javascript:void(0)
,因爲它沒有任何效果,不像#
。但是,你可以沒有HREF可言,給a
一個class
,使它看起來像一個鏈接,如:
/* in stylesheet */
a.scriptlink {
color: blue;
text-decoration: underline;
cursor: pointer
}
<!-- in HTML -->
<a class="scriptlink" onclick="whatever">
我更喜歡的javascript:無效(0)1#,因爲它不會改變地址欄通過放置一個#(這可能會影響將來使用/更改URL的腳本)。
但是比他們兩個都好,我更喜歡讓onclick函數返回false(所以它根本不會導航),然後放置一個可以產生與點擊相同的動作的URL。例如,假設點擊鏈接將一些內容加載到'mainArea'div中。然後,URL將重新加載整個頁面,並用相同的東西填充該mainArea。這樣做的好處是,如果他們右鍵單擊URL和複製地址或在新選項卡中打開,它仍然有效。
<a href="/FullUrl" onclick="return doClick(this);" >Stuff</a>
如果你想單獨標記和腳本,您也可以考慮使用事件代表團設置了事件處理程序。許多Javascript框架(例如jQuery)都帶有跨瀏覽器抽象,使其不那麼麻煩;由於NIH綜合症,我推出了my own solution。
一個完整的例子看起來是這樣的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test</title>
<script type="text/javascript"
src="http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/capture.js">
</script>
<script type="text/javascript">
// un-hide elements
document.documentElement.className = 'js';
// use event-delegation to capture click-events
capture('click', '.clicky', function(event) {
alert(this.title);
return false;
});
</script>
<style type="text/css">
/* display element only if scripting is enabled */
.clicky { display: none; }
.js .clicky { display: inline; }
</style>
</head>
<body>
<!-- link shouldn't be user-accessible; nevertheless, direct user to
error page -->
<div>
<a href="no-js.html" class="clicky" title="clickety-click">click me</a>
</div>
</body>
</html>
@delnan:它滾動到頂部一般。 – configurator 2011-01-30 12:51:45
根本不要在html中使用`onclick`事件。 – 2011-01-30 12:53:50
@delna:1)您的頁面必須具有必須啓用滾動條的垂直高度; 2)將href =「#」放在頁面中間的相同位置,向下滾動,以便您的href =「#」保持在視口之上。 3)點擊。 ;) – MEM 2011-01-30 12:54:21