[英]How to call function from external js file onload or onclick event into my html
[英]onload from external js file
我正在編寫一個js腳本,人們可以通過在其HTML的標頭或正文部分的末尾添加一行代碼來將其添加到其網站上。
我的問題是如何在外部js文件上執行onload。 下面的代碼可以工作嗎? 它可能無法在文檔加載后運行並錯過onload事件嗎?
function c_onload () { alert ('onload'); }
if (window.attachEvent) {window.attachEvent('onload', c_onload);}
else if (window.addEventListener) {window.addEventListener('load', c_onload, false);}
else {document.addEventListener('load', c_onload, false);}
(我不能使用Jquery或任何其他庫)
你最后else
子句
else {document.addEventListener('load', c_onload, false);
對於? 真沒用,恕我直言。
以下應該是跨瀏覽器的解決方案:首先檢查addEventListener()
,然后檢查attachEvent()
並退回到onload = ...
function chain(f1, f2) {
return typeof f1 !== 'function' ? f2 : function() {
var r1 = f1.apply(this, arguments),
r2 = f2.apply(this, arguments);
return typeof r1 === 'undefined' ? r2 : (r1 && r2);
};
}
function addOnloadListener(func) {
if(window.addEventListener)
window.addEventListener('load', func, false);
else if(window.attachEvent)
window.attachEvent('onload', func);
else window.onload = chain(window.onload, func);
}
還有,kgiannakakis所說的
原因是瀏覽器對onLoad事件的處理方式不同。
是不正確的:所有主流瀏覽器都以相同的方式處理window.onload
,即,在加載了外部資源( 包括您的外部腳本)之后執行了監聽器函數。 問題出在DOMContentLoaded
-在那里發生了doScroll()
, defer
, onreadystatechange
以及其他人onreadystatechange
東西的黑客攻擊。
根據您的目標受眾,您可能想要刪除后備代碼,甚至專門使用它。 我的表決將投棄權票。
恐怕如果您不能使用jQuery或其他一些庫,則需要重現其功能的很多方式。 原因是瀏覽器對onLoad事件的處理方式不同。
我建議您下載jQuery的代碼,並查看如何實現documentready函數。
onLoad事件應在加載其附加到的元素時運行。 但是某些瀏覽器*誤將其誤認為是“ beforeload”或“加載期間的某個時間”,因此確保在加載所有html后運行某些內容的最安全的選擇是在HTML源代碼的底部添加對函數的調用,例如:
...
<script type="text/javascript">
c_onload();
</script>
</body>
</html>
(*我確實相信至少有一些適用於Windows的Safari版本存在此問題)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.