簡體   English   中英

我什么時候需要指定JavaScript協議?

[英]When do I need to specify the JavaScript protocol?

我的印象是,我只需要在URL屬性中使用JavaScript時指定“協議”,例如在hrefs中。 這是javascript:的唯一“有用”上下文javascript:

明智的:

<a href="javascript:alert('Hello')">World!</a>

愚蠢:

<form onsubmit="javascript:alert('oops!')">

這是正確的嗎? 或者是否需要注意一些模糊的bug /用例?

事件處理程序上的javascript: pseudo-protocol將被忽略,您不需要它,JavaScript引擎會將javascript:解釋為Label語句

標簽只是為語句提供標識符,並允許您在程序的其他位置引用它。

恕我直言,這個偽協議只對bookmarklet有用...

推薦文章:

正如其他答案所提到的,避免使用javascript: href鏈接,並且在事件處理程序屬性中完全沒有必要。 但是,由於A標簽有時在語義上仍然正確,因此如果您希望將:link:hover CSS樣式應用於Internet Explorer中的元素,則需要在href屬性中放置一些內容。 在這種情況下,使用:

<a href="#" onclick="doSomething(); return false;">Link</a>

要么

<a href="javascript://" onclick="doSomething();">Link</a>

javascript協議存在一個(有點模糊)錯誤 - 在Internet Explorer *中,當您單擊鏈接時,它會認為您將離開頁面。 如果您使用的是window.onbeforeunload ,則此時會顯示您的導航消息。 僅僅因為這個原因,我們已經完全停止使用javascript協議,因此我們沒有顯示此錯誤,因為我們在向某個頁面添加導航消息時忘記檢查它。


*我可能應該在我第一次寫這個時指定版本。 我根本不記得了,但是為了防止這個bug只存在於IE 6或7等現在大多已經不存在的瀏覽器中,你最好自己測試一下。

永遠不要指定它。 <a>標簽中執行它是錯誤的,而這應該像這樣編碼:

<a href='#' onclick='alert("Hello")'>World</a>

這是過去幾天的殘余。 我唯一能想到它在哪里使用的將是瀏覽器地址欄(和書簽書簽)。 將它保留在您的頁面之外。

在實踐中,你是對的。

您需要在任何需要腳本之外的其他實例中執行此操作。 從理論上講,你可以堅持使用javascript:whatever你在哪里都可以使用URL,但這從未得到支持,現在正式推薦使用。

但是 ,你真的不應該使用javascript: at。 對於鏈接,您可以使用onclick屬性。 現在實際發生的是JavaScript引擎正在識別javascript:作為標簽,這就是代碼執行的原因。

您應該查看http://bytes.com/topic/javascript/answers/504856-javascript-pseudo-protocol-event-handlers特別是“Lasse Reichstein Nielsen”的帖子,因為大多數答案在某些方面都不正確。

還要記住,錨標簽根本不需要href! 那是<a>hi</a>是有效的xhtml。 使用href="#"是它可能會滾動到頁面的頂部..根本不需要它。 最后,如果您實際上不想要錨標記的行為,則不應使用它。 您可以使用css( cursor:pointer )和mouseenter和mouseleave等事件來模擬一個錨點(這樣做更有效,但不會“破壞”錨標記的預期行為)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM