問題描述

如何將一個 onload 事件新增到元素?我可以用嗎:

<div onload="oQuickReply.swap();" ></div>

為了這?

最佳解決方案

不,你不行使其工作的最簡單的方法是將函式呼叫直接放在元素之後

例:

...
<div id="somid">Some content</div>
<script type="text/javascript">
   oQuickReply.swap('somid');
</script>
...

或者更好 – 剛剛在</body> 前面:

...
<script type="text/javascript">
   oQuickReply.swap('somid');
</script>
</body>

… 所以它不阻止以下內容載入。

次佳解決方案

onload 事件只能在 document(body)本身,框架,影像和指令碼上使用。換句話說,它可以僅附加到身體和/或每個外部資源。該 div 不是一個外部資源,它作為身體的一部分載入,所以 onload 事件不適用於那裡。

第三種解決方案

我只想在這裡新增,如果有人想要呼叫 div& 你不想使用 jQuery(因為我的情況下的衝突),所以在所有 html 程式碼或任何其他編寫的程式碼之後,只需呼叫一個函式,包括函式程式碼,並且只需呼叫一個函式。

/* All Other Code*/
-----
------
/* ----At the end ---- */
<script type="text/javascript">
   function_name();
</script>

要麼

/* All Other Code*/
-----
------
/* ----At the end ---- */
<script type="text/javascript">
 function my_func(){
   function definition;      

  }

 my_func();
</script>

第四種方案

您可以使用 onerror,而不是 src 在 IMG 元素上自動觸發一些 js 。

<img src onerror='alert()'>

第五種方案

嘗試這個!並且不要在 div 上使用觸發器兩次!

您可以定義在 div 標籤之前呼叫的函式。

$(function(){
    $('div[onload]').trigger('onload');
});

演示:jsfiddle

第六種方案

onload 事件只支援下面列出的幾個標籤。

<body>, <frame>, <iframe>, <img>, <input type="image">, <link>, <script>, <style>

這裡是 onload event 的參考

第七種方案

我們可以使用 MutationObserver 以有效的方式在下面新增示例程式碼來解決問題

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #second{
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: #a1a1a1;
        }
    </style>
</head>
<body>
<div id="first"></div>
<script>
    var callthis = function(element){
           element.setAttribute("tabIndex",0);
        element.focus();
        element.onkeydown = handler;
        function handler(){
                alert("called")
        }
    }


    var observer = new WebKitMutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            for (var i = 0; i < mutation.addedNodes.length; i++)
            if(mutation.addedNodes[i].id === "second"){
                callthis(mutation.addedNodes[i]);
            }

        })
    });
    observer.observe(document.getElementById("first"), { childList: true });


    var ele = document.createElement('div');
    ele.id = "second"

    document.getElementById("first").appendChild(ele);

</script>

</body>
</html>

第八種方案

使用 iframe 並隱藏 iframe 的工作方式就像一個 body 標籤

<!DOCTYPE html>
<html>
<body>

<iframe style="display:none" onload="myFunction()" src="http://www.w3schools.com"></iframe>
<p id="demo"></p>

<script>
function myFunction() {
    document.getElementById("demo").innerHTML = "Iframe is loaded.";
}
</script>

</body>
</html>

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇