传统上,要在页面加载后调用JavaScript函数,您需要向包含一些JavaScript的主体添加一个onload属性(通常只调用函数)。

<body onload="foo()">

加载页面后,我想运行一些JavaScript代码,用来自服务器的数据动态填充页面的某些部分。我不能使用onload属性,因为我使用的是JSP片段,它没有可以添加属性的主体元素。

是否有其他方法调用JavaScript函数加载?我宁愿不使用jQuery,因为我不是很熟悉它。


当前回答

<!DOCTYPE html > < html > < >头 <标题>测试< /名称> <meta http-equiv=" content - type " content="text/html;utf - 8字符集= " / > < script type = " text / javascript " > 函数codeAddress() { alert('好的'); } 窗口。onload = codeAddress; > < /脚本 < / >头 身体< > < /身体> < / html >

其他回答

function yourfunction() { /* do stuff on page load */ }

window.onload = yourfunction;

或者使用jQuery,如果你想:

$(function(){
   yourfunction();
});

如果你想在页面加载中调用多个函数,请查看这篇文章以获得更多信息:

使用多个JavaScript Onload函数

另一种方法是使用事件监听器,下面是你如何使用它们:

document.addEventListener("DOMContentLoaded", function() {
  your_function(...);
});

解释:

这意味着当文档的DOM对象完全加载并被JavaScript看到时。也可以是"click", "focus"…

function()匿名函数,当事件发生时将被调用。

你最初的问题不清楚,假设凯文的编辑/解释是正确的,那么第一个选项不适用

典型的选项是使用onload事件:

<body onload="javascript:SomeFunction()">
....

你也可以把你的JavaScript放在正文的最后;直到文档完成它才会开始执行。

<body>
  ...
  <script type="text/javascript">
    SomeFunction();
  </script>
</body>

另一种选择是使用JS框架,它本质上是这样做的:

// jQuery
$(document).ready( function () {
  SomeFunction();
});

<!DOCTYPE html > < html > < >头 <标题>测试< /名称> <meta http-equiv=" content - type " content="text/html;utf - 8字符集= " / > < script type = " text / javascript " > 函数codeAddress() { alert('好的'); } 窗口。onload = codeAddress; > < /脚本 < / >头 身体< > < /身体> < / html >

检测加载的html(从服务器)插入到DOM使用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>