问题描述

如何将一个 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛