[英]What's a better way to call a JavaScript function in another file?
[英]Better way to call javascript function in a tag
兩者都不好。
應該獨立於實際標記配置行為。 例如,在jQuery中你可能會做類似的事情
$('#the-element').click(function () { /* perform action here */ });
在一個單獨的<script>
塊中。
這樣做的好處就是它
此外,它會優雅地降級(但使用onclick
事件也是如此),因為如果用戶沒有啟用JavaScript,您可以為鏈接標記提供href
。
當然,如果您不使用jQuery或其他JavaScript庫(但為什么這樣做?),這些參數仍然很重要。
第二種選擇的一些優點:
你可以在onclick
里面使用this
來引用錨本身(在選項1中做同樣的事情會給你一個window
)。
您可以將href
設置為非JS兼容的URL,以支持舊版瀏覽器(或禁用JS的瀏覽器); 支持JavaScript的瀏覽器將執行該函數(保留在頁面上你必須使用onclick="return someFunction();"
並從函數內部return false
或onclick="return someFunction(); return false;"
to prevent默認動作)。
我發現當使用href="javascript:someFunction()"
並且函數返回一個值時會發生奇怪的事情; 整個頁面將被該值替換。
陷阱
內聯代碼:
在document
范圍內運行,而不是在window
范圍內運行的<script>
標記內定義的代碼; 因此,可以基於元素的name
或id
屬性來解析符號,從而導致嘗試將元素視為函數的意外效果。
更難重用; 需要精細的復制粘貼才能將其從一個項目移動到另一個項目。
為頁面添加權重,而外部代碼文件可以由瀏覽器緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.