javascript - 如何在文档已经加载后将 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,以便我可以动态加载脚本?
谢谢!
解决方案
推荐阅读
- rust - 如何使用运行 Gnome xOrg 的 Debian 为 Nannou 调试 NoAvailableAdapter?
- go - 处理“长期互斥”类型的问题?
- r - 如何有效地将 cumprod 应用于 tidyverse 中的所有列
- html - 如何使用相对定位的子图像调整图像的大小?
- javascript - eventTarget.click() 和 eventTarget.dispatchEvent(new Event("click")) 有什么区别?
- java - Ubuntu 18.04.05 上的 Ambari 2.7.5 安装失败
- c++ - 反转单链表的特定部分,即从 m 到 n
- javascript - 在nodejs中的同一连接内运行查询
- python - Pyspark:在列和索引上排名()?
- c# - 如何使列容易可见?