首页 > 解决方案 > 如何在文档已经加载后将 JavaScript 添加到页面?

问题描述

我最近一直在尝试使用 AJAX,用它来抓取存储在单独文件中的 HTML 片段并将它们包含在我的页面中。在大多数情况下,它似乎按预期工作:客户端脚本将新 HTML 放置在页面上,浏览器检测到更改,然后更新站点以显示新数据。但是,我注意到这不适用于脚本标签......标签中的代码永远不会运行,也没有检测到任何功能。

例如,如果我有以下 HTML:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
    <div id="placeHTMLHere"></div>
    </body>
</html>

并使用 JavaScript 将 div 元素的 innerHTML 设置为以下内容:

<script>
    var thisWillNot = function() { }
</script>
<p onclick="alert('this will work'); alert(typeof thisWillNot);">this will work</p>

当然,我会在页面上看到“这将起作用”字样,如果我单击它们,则会警告“这将起作用”,然后是“未定义”。因此,我知道浏览器从不“执行”函数定义;任何thisWillNot()失败的电话。

我只是好奇为什么我可以运行附加到 HTML 元素的基于事件的 JavaScript,但不能向页面添加其他脚本。我会假设只是浏览器没有识别出添加了新脚本,但是由于它立即重新渲染页面以包含新的可显示元素,我被迫得出结论浏览器确实知道何时添加新内容(或代码)被引入页面。我可以做些什么来强制浏览器“刷新”它看到的 JavaScript,以便我可以动态加载脚本?

谢谢!

标签: javascripthtmlajax

解决方案


推荐阅读