javascript - 在ajax响应中执行javascript

标签 javascript jquery html ajax

我正在使用 ajax(带有 jQ​​uery)来更新网页的部分内容。 查询返回 html 以插入到各个位置。

但是,这些 html block 有时包含编写内容的 javascript 他们所在的地方。我的意思是,在 AJAX 返回的 html 的某些 div 中,包含一个脚本,该脚本执行一些 document.write() 指令(通常是来 self 们的广告发布商的脚本,我们无法对其进行任何控制)。

现在,如果我只获取 AJAX 查询返回的 html 并用它更新 DOM,则 javascript 不会被执行。
确保 document.write() 在适当的位置写入内容的最干净/最简单的方法是什么?

最佳答案

您不能将 document.write() 用于动态插入的内容。问题是当前文档已经在初始页面加载时打开、解析和关闭。如果您现在从这些脚本之一调用 document.write(),它将清除当前文档并开始写入新文档。这将使您的浏览器窗口空白并只写入新内容(这当然不是您想要的)。

我能想到的选项是:

  1. 将内容放入 iframe 中并通过 .src 属性加载,而不是通过 ajax,以便内容可以加载到新文档中,并且 document.write() 可以做正常的、预期的事情。

  2. 更改这些脚本以不使用document.write()。如果您控制该代码,则需要更改脚本以将内容插入特定的 DOM 元素,而不是尝试写入文档流,因为一旦原始文档被解析并且文档流将无法按照您想要的方式工作文件已关闭。

  3. 破解 document.write()(通过暂时用不同的方法替换它),以便以不同的方式捕获 document.write() 内容当您的动态内容正在加载时,然后您将其动态插入到某些现有的 DOM 元素中,而不是使用实际的 document.write()。这确实是一种黑客行为,不能保证这在所有浏览器中都有效。

关于javascript - 在ajax响应中执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545634/

相关文章:

javascript - Firebase 日期存储出错

javascript - 用逗号分割字符串,但也要保留空字段

javascript - 经管理员批准后更新数据库

javascript - JQuery 事件只触发一次,即使它被触发了不止一次

javascript - 如何将express-session req.session.user附加到chai-http请求?

javascript - jQuery:.after() 导致乘法元素重复故障?

jquery - 如何在页面的不同部分实现视差效果?

php - 使用 PHP 创建 CRUD 的最简单方法

jquery - 页面加载时的只读输入

javascript - PHP联系表单不发送 'selectpicker'数据