我正在寫一個小文件,HTML是這樣的:在沒有重新加載的情況下跳轉到頁面內部時要監聽的事件是什麼?
<dl class="commands">
<dt id="commandA">Command A</dt>
<dd class="description">This command makes you happy.</dd>
<dt id="commandB">Command B</dt>
<dd class="description">This command makes you even happier.</dd>
</dl>
我想如果訪問mydoc.html#commandA
亮點,其中寫入了command A
說明這將是很好,並寫了下面的javascript:
(function(){
window.addEventListener('load', emphCmd);
function emphCmd(){
var loc = window.location.href;
if (/\.html#.*$/.test(loc)){
var cmd = loc.split("#")[1]; // "commandA" for mydoc.html#commandA
var cmdElm = document.getElementById(cmd);
if (cmdElm !== null){ // if element with that id is found,
cmdElm.style.backgroundColor = "#eeeeaa"; // highlight its background.
}
}
}
})();
這是有效的,但只有當頁面被加載時(當然,我說過在load
上這樣做)。腳本不執行任何操作的情況包括:i)當我手動將#commandA
添加到瀏覽器的地址欄中並按Enter鍵(不帶F5 ---重新加載)時ii)使用<a>
標籤在頁面內跳轉。
我希望在任何情況下都能突出顯示它。對於<a href="#commandA">
,我大概可以是anchor.addEventListener('click',emphCmd)
,雖然這看起來不太整齊。
是否有這些「跳入頁面」的事件?如果沒有,那麼達成這種效果的好方法是什麼?
我認爲'scroll'事件就是你想要的。 – Barmar 2014-10-17 03:34:38
@Barmar事件只是通過滾動來觸發,對吧?雖然在這種情況下不會導致問題,因爲'#'後面的內容總是被選中,我是否理解沒有特殊的「跳躍,不滾動」方式? – Yosh 2014-10-17 03:38:05
我不完全確定。我認爲它可能引發窗口重新定位的任何事情,而不僅僅是使用滾動條。嘗試一下,看看它是否有效。 – Barmar 2014-10-17 03:39:12