1. 程式人生 > 實用技巧 >javascript 通訊協議

javascript 通訊協議

簡介

javascript 通訊協議是一個偽協議[1], 用於指定 URL 為 JavaScript 程式碼

  • 語法:

    javascript:someScript;
    
    • someScript 是一個或多個使用 ; 分隔的 JavaScript 語句.
  • 示例

    <a href="javascript:alert('JavaScript Link!');">JavaScript Link</a>
    

特點

  • 返回值會替換當前文件

    • 對於 Chrome 瀏覽器來說, 如果最後一條 JavaScript 語句的值為字串 (使用'', ""

      ` 括起來的值), 那麼該字串會替換當前文件的內容, 作為新文件顯示出來

    • 對於 Firefox 瀏覽器來說, 如果最後一條瀏覽器的返回值不為 undefined, 那麼就呼叫該返回值的 toString() 方法 (如果 toString() 方法不存在就呼叫 valueOf() 方法), 得到的結果作為新文件顯示出來

    • 返回值為 undefined 的幾種常見寫法

      javascript:;
      
      javascript:undefined;  // 全域性變數 undefined 的值可能被更改
      
      // void 將之後的內容當作表示式, 然後對該表達是求值, 並始終返回 undefined, 而不管全域性變數 undefined 的值是否被改變
      // 以下寫法等價
      javascript:void(0);
      javascript:void 0;
      

用途

  • 任何使用 URL 的地方都可以使用該通訊協議
    • 在保留錨元素 href 屬性的同時防止點選錨元素頁內/外跳轉

      javascript:;
      javascript:undefined;
      javascript:void(0);
      
    • 執行 JavaScript 程式碼 (不推薦)

      // 更改頁面背景為綠色 (不推薦, 這裡可以為錨元素繫結事件替換)
      <a href="javascript:void(document.body.style.backgroundColor='green');">
      
      // 開啟新頁面 (注意需返回 undefined, 否則在火狐瀏覽器會替換文件)
      <a href="javascript:window.open('about:blank'); void(0);">
      

  1. [網路通訊協議]https://www.cnblogs.com/ayuuuuuu/p/13359978.html#偽協議) ↩︎