我們經(jīng)常會(huì)用鏈接<a> 來(lái)代替 <button> 觸發(fā)onclick事件。
比如<a href="javascript: alert()">測(cè)試</a>
這樣做出現(xiàn)的結(jié)果就是: 執(zhí)行了alert()后,直接跳到了一個(gè)空頁(yè)面.因?yàn)閔tml本身對(duì) <a>標(biāo)簽的href屬性做了處理,所以就會(huì)先執(zhí)行我們自己定義的方法,接著再運(yùn)行它自身的方法(跳轉(zhuǎn)的方法)。
那么以前我是怎么做的呢? 我將代碼改為<a href = "#" onclick="alert()">,這樣就不會(huì)出現(xiàn)上述的問(wèn)題了,這個(gè)是通過(guò)對(duì)href屬性的了解,只要賦給href=“#”,那么它便不會(huì)跳到空頁(yè)面。 我本以為這樣的問(wèn)題已經(jīng)解決了,
想不到這種寫(xiě)法也有個(gè)問(wèn)題,就是當(dāng)頁(yè)面出現(xiàn)垂直滾動(dòng)條的時(shí)候,比如你的鏈接是在頁(yè)面最底端,你需要將滾動(dòng)條拉下才能看到此鏈接,你點(diǎn)擊鏈接,就會(huì)先執(zhí)行alert(),這個(gè)時(shí)候滾動(dòng)條會(huì)自動(dòng)拉上去到頁(yè)面頂端,這給使用系統(tǒng)的客戶(hù)造成了很大的不方便,由于頁(yè)面自動(dòng)往頂端跳,用戶(hù)又要下拉滾動(dòng)條來(lái)操作。這個(gè)說(shuō)明執(zhí)行了alert()方法后,瀏覽器自身也執(zhí)行了自己的方法。
這樣考慮之后,現(xiàn)在的做法是 <a href="" onclick = "alert();event.returnValue=false"/>,瀏覽器也是要響應(yīng)這個(gè)事件,那么我們將這個(gè)事件停止傳播了,自然也就沒(méi)上面的問(wèn)題了,當(dāng)然event.returnValue只是IE的特有,如果要兼容firefox,mozilla ,可能需要考慮兼容性的編碼了,但這不是表達(dá)的重點(diǎn).
所以在平時(shí)的頁(yè)面設(shè)計(jì)中,最好都是用button來(lái)響應(yīng)onclick事件,如果有涉及到鏈接的,希望我這種做法能給大家?guī)?lái)幫助。
語(yǔ)言表達(dá)有限,如果覺(jué)得寫(xiě)得不太清楚的,請(qǐng)大家運(yùn)行下面的例子,最后三個(gè)鏈接就是我剛剛講的三種情況,此例子在IE6.0是通過(guò)的。
<BODY>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="#" onclick="alert()">test</a> </p>
<p>
<a href="javascript:alert()" >test</a> </p>
<p>
<a href="#" onclick="alert();event.returnValue=false;">test</a> </p>
</BODY>
其他人回答:
<a href="javascript:void(0)" onclick="something()" >test</a> 是正解,加#也會(huì)亂跳的
囧,你就不能onclick="something();return false"啊……
javascript:void(0)這種偽協(xié)議,少寫(xiě)的好,如果你看過(guò)一些web標(biāo)準(zhǔn)的書(shū)就知道為什么了。
總結(jié)一下,如果在實(shí)際應(yīng)用中確實(shí)是要用到<a>標(biāo)簽來(lái)響應(yīng)onclick事件的。
那么就建議使用下面三種方法
1.<a href="javascript:void(0)" onclick="doSomething()">test</a>
2.<a href="" onclick="doSomething();return false">test</a>
3.<a href="" onclick="doSomething();event.returnValue=false">test</a>
其實(shí),我發(fā)這個(gè)帖子的主要目的是,我以前一直都習(xí)慣用 <a href="#">,而且一直沒(méi)有發(fā)現(xiàn)有 滾動(dòng)條會(huì)跳上去的 問(wèn)題, 今天才發(fā)現(xiàn)有這樣的問(wèn)題,所以才有如上所說(shuō)。
?石家莊網(wǎng)站建設(shè)的優(yōu)點(diǎn):我們是專(zhuān)屬定制,制作符合您公司業(yè)務(wù)、風(fēng)格的網(wǎng)站,這就做到給您制作的網(wǎng)站是網(wǎng)絡(luò)上獨(dú)一無(wú)二的網(wǎng)站,這樣更有利于搜索引擎的收錄。如果您喜歡網(wǎng)絡(luò)上某個(gè)風(fēng)格的網(wǎng)站或者網(wǎng)站模板,我們是只仿制而不直接套用,我們會(huì)對(duì)其中的結(jié)構(gòu)和樣式做增減優(yōu)化,做…
?競(jìng)價(jià)排名營(yíng)銷(xiāo)是一種通過(guò) 競(jìng)價(jià)購(gòu)買(mǎi)搜索引擎中關(guān)鍵詞或關(guān)鍵短語(yǔ)的廣告方式。競(jìng)價(jià)排名營(yíng)銷(xiāo)分為兩種類(lèi)型。 第一種,直接為真正的搜索引擎結(jié)果的排名付費(fèi),也就是說(shuō)付的錢(qián)越多,網(wǎng)頁(yè)所獲得的排名名也就越高。 第二種則更類(lèi)似于普通的廣告。這種競(jìng)價(jià)排名營(yíng)銷(xiāo)方式通過(guò)…
?網(wǎng)站優(yōu)化對(duì)網(wǎng)站來(lái)說(shuō)是非常重要的,直接決定和影響著網(wǎng)站所起到的作用,以及在各個(gè)地方當(dāng)中的排名。在進(jìn)行seo優(yōu)化的過(guò)程中,我們必須要堅(jiān)持一定的原則,真正的把這些事情做得更好,才可以確保最終的結(jié)果,這對(duì)于我們來(lái)說(shuō)是非常重要的事。 SEO優(yōu)化主要分為8小步: …