[英]How do I call a JavaScript function on page load?
传统上,要在页面加载后调用 JavaScript function,您需要向包含 JavaScript 的正文添加一个onload
属性(通常只调用一个函数)
<body onload="foo()">
页面加载后,我想运行一些 JavaScript 代码,以使用来自服务器的数据动态填充页面的某些部分。 我不能使用onload
属性,因为我使用的是 JSP 片段,这些片段没有我可以添加属性的body
元素。
还有其他方法可以在加载时调用 JavaScript function 吗? 我宁愿不使用 jQuery,因为我对它不是很熟悉。
如果希望onload方法采用参数,则可以执行以下操作:
window.onload = function() {
yourFunction(param1, param2);
};
这会将onload绑定到一个匿名函数,该匿名函数在调用时将使用您提供的任何参数运行所需的函数。 而且,当然,您可以从匿名函数内部运行多个函数。
另一种方法是使用事件侦听器,这里是如何使用它们:
document.addEventListener("DOMContentLoaded", function() {
you_function(...);
});
说明:
DOMContentLoaded这意味着当文档的DOM对象完全加载并被JavaScript看到时,这也可能是“单击”,“焦点” ...
function()匿名函数,将在事件发生时被调用。
您最初的问题尚不清楚,假设Kevin的编辑/解释正确,则第一个选项不适用
典型的选项是使用onload
事件:
<body onload="javascript:SomeFunction()">
....
您也可以将javascript放在正文的最后; 在文档完成之前,它不会开始执行。
<body>
...
<script type="text/javascript">
SomeFunction();
</script>
</body>
并且,另一个选择是考虑使用本质上是这样做的JS框架:
// jQuery
$(document).ready( function () {
SomeFunction();
});
function yourfunction() { /* do stuff on page load */ }
window.onload = yourfunction;
或使用jQuery(如果需要):
$(function(){
yourfunction();
});
如果要在页面加载时调用多个函数,请查看本文以获取更多信息:
您必须调用要在加载时调用的函数(即,文档/页面的加载)。 例如,要在文档或页面加载时加载的函数称为“ yourFunction”。 这可以通过在文档的load事件上调用函数来完成。 请参阅下面的代码以获取更多详细信息。
请尝试以下代码:
<script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
yourFunction();
});
function yourFunction(){
//some code
}
</script>
这是窍门(无处不在):
r(function(){
alert('DOM Ready!');
});
function r(f){/in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
<!DOCTYPE html> <html> <head> <title>Test</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> function codeAddress() { alert('ok'); } window.onload = codeAddress; </script> </head> <body> </body> </html>
对于检测插入到DOM中(从服务器中)的加载的html(使用服务器),请使用MutationObserver
或在准备使用数据时检测loadContent函数中的时刻
let ignoreFirstChange = 0; let observer = (new MutationObserver((m, ob)=> { if(ignoreFirstChange++ > 0) console.log('Element added on', new Date()); } )).observe(content, {childList: true, subtree:true }); // TEST: simulate element loading let tmp=1; function loadContent(name) { setTimeout(()=>{ console.log(`Element ${name} loaded`) content.innerHTML += `<div>My name is ${name}</div>`; },1500*tmp++) }; loadContent('Senna'); loadContent('Anna'); loadContent('John');
<div id="content"><div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.