JavaScript中偽協議


javascript:這個特殊的協議類型聲明了URL的主體是任意的javascript代碼,它由javascript的解釋器運行

 

將javascript代碼添加到客戶端的方法是把它放置在偽協議說明符javascript:后的URL中。這個特殊的協議類型聲明了URL的主體是任意的javascript代碼,它由javascript的解釋器運行。如果javascript:URL中的javascript代碼含有多個語句,必須使用分號將這些語句分隔開。這樣的URL如下所示:

 

1 javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

 

當瀏覽器裝載了這樣的URL時,它將執行這個URL中包含的javascript代碼,並把最后一條javascript語句的字符串值作為新文檔的內容顯示出來。這個字符串值可以含有HTML標記,並被格式化,其顯示與其他裝載進瀏覽器的文檔完全相同。

javascript URL還可以含有只執行動作,但不返回值的javascript語句。例如:

 

1 javascript:alert("hello world!")

 

裝載了這種URL時,瀏覽器僅執行其中的javascript代碼,但由於沒有作為新文檔來顯示的值,因此它並不改變當前顯示的文檔。

通常我們想用javascript:URL執行某些不改變當前顯示的文檔的javascript代碼。要做到這一點,必須確保URL中的最后一條語句沒有返回值。一種方法是用void運算符顯式地把返回值指定為underfined,只需要在javascript:URL的結尾使用語句void 0;即可。例如:下面的URL將打開一個新的空瀏覽器窗口,而不改變當前窗口的內容:

 

1 javascript:window.open("about:blank"); void 0;

 

如果這個URL沒有void運算符,window.open()方法的返回值將被轉換成字符串並被顯示出來,當前窗口將被如下所示的文檔覆蓋。

 

使用:在不引入父級頁面js的情況下,調用父級頁面的方法

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6     <style>
 7         .test {
 8             width: 50px;
 9             height: 50px;
10             background-color: black;
11         }
12     </style>
13     <script>
14         function topLink(link) {
15             var target = window;
16             if (window.top) {
17                 target = window.top;
18             }
19             target.location.href = link;
20         }
21     </script>
22 </head>
23 <body>
24     <div class="test">
25         <a href="javascript:topLink('javascript:testFun()')">返回</a>
26     </div>
27 </body>
View Code

其中testFun()是父級頁面的公用方法

 

參考:http://www.jb51.net/article/52358.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM