javascript : 偽協議限定符說明了URL的內容是JavaScript解譯器將要啟動並執行JavaScript代碼的一個任意的字串。一個JavaScript URL如下所示:
javascript:var now=new Date();"<h1>The time is :</h1>"+now;
當瀏覽器載入這樣的一個JavaScript URL,它會執行URL中所包含的JavaScript代碼,並且使用最後一個JavaScript語句或運算式的值,轉換為一個字串,作為新載入的文檔的內容顯示。這個字串值可能包含HTML標記,並且像載入到瀏覽器中的其他文檔那樣格式化和顯示。
JavaScript URL也可以包含執行操作但不傳回值的JavaScript語句。例如:
javascript:alert("Hello World !");
當載入了這種類型的URL的時候,瀏覽器執行JavaScript代碼,但是因為沒有值作為新的文檔來顯示,它並不會改變當前顯示的文檔。
通常程式員還可能希望使用一個JavaScript URL來執行某些JavaScript代碼而不改變當前顯示的文檔。要做到這一點,需要確保URL中的最後一條語句沒有傳回值。確保這一點的一種方式是,使用void運算子來顯式地指定一個未定義的傳回值。只需要在JavaScript URL的結尾使用void 0;。例如下面的URL開啟一個新的空白的瀏覽器而並不改變當前視窗的內容:
javascript:window.open("about:blank");void 0;
如果這個URL中沒有void運算子,Window.open( )方法調用的傳回值將會被轉換為一個字串並顯示,並且當前的文檔會被新的文檔覆蓋,新文檔顯示如下內容:
[object Window]
javascript:偽協議可以和HTML 屬性一起使用,該屬性的值也應該是一個URL。一個超連結的href屬性就滿足這種條件。當使用者點擊一個這樣的連結,指定的JavaScript代碼會執行。在這種情況下,JavaScript URL本質上是一個onclick事件控制代碼的替代。
<a href="javascript:alert('Hello World !')">test</a>
類似的,一個JavaScript URL可以用作<form>標記的action屬性,這樣,當使用者提交這個表單的時候,URL中的JavaScript代碼就會執行:
<body><form action="javascript:alert('Hello World !')"><input type="submit" value="confirm"></form></body>