[英]Do I need to specify object type when creating globals in 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.