URL中的JavaScript

來源:互聯網
上載者:User

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>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.