1. 程式人生 > >關於href="javascript:void 0;"

關於href="javascript:void 0;"

注:根據《JavaScript權威指南》總結。
犀牛書裡面總結了四種在HTML文件中嵌入JavaScript程式碼的方法:

  1. 內聯。放置在<script>標籤裡面;
  2. 放置在<script>標籤的src屬性指定的外部檔案中;
  3. 放置在HTML事件處理程式中,該事件處理程式由onclick或者onmouseover這樣的HTML屬性值指定;
  4. 放在URL裡面,這個URL使用特殊的“javascript:”協議。

    那麼href="javascript:void 0;"就是第四種引用js的方法。

一、URL中的javascript用法

在url中使用javascript這種協議型別指定,javascript:

後面的字串會被JavaScript直譯器執行,它被當做單獨的一行程式碼。
部分瀏覽器會將程式碼的執行結果作為新頁面的顯示內容。
其他瀏覽器不允許URL像上面一樣覆蓋當前文件。

當代碼沒有返回值時,瀏覽器都不會發生跳轉,所以實際上href="javascript: /*some code here*/"差不多等價於onclick=/*some code*/
二、href=”javascript:void 0;”的意圖
為了確保javascript:URL 不會覆蓋當前文件,強制用void 操作符給表示式賦予undefined;
三、為什麼不直接使用undefined?
上面說到用void來賦予undefind,為什麼不直接返回undefined?
這是因為瀏覽器中,undefined是window物件的一個屬性,而在有些瀏覽器中允許修改這個屬性。