在ajax响应中执行javascript
我正在使用ajax(结合jQuery)更新网页的某些部分。 查询返回要在不同位置插入的html 然而,这些html块有时包含编写东西的javascript 他们所在的地方。我的意思是,在AJAX返回的html的某些div中,包含了一个脚本,该脚本执行一些document.write()指令(通常是我们无法控制的ads发行商的脚本) 现在,如果我只获取AJAX查询返回的html并用它更新DOM,javascript将不会执行。在ajax响应中执行javascript,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用ajax(结合jQuery)更新网页的某些部分。 查询返回要在不同位置插入的html 然而,这些html块有时包含编写东西的javascript 他们所在的地方。我的意思是,在AJAX返回的html的某些div中,包含了一个脚本,该脚本执行一些document.write()指令(通常是我们无法控制的ads发行商的脚本) 现在,如果我只获取AJAX查询返回的html并用它更新DOM,javascript将不会执行。 确保document.write()将其内容写入适当位置的最干净/最简
确保document.write()将其内容写入适当位置的最干净/最简单的方法是什么?您不能对动态插入的内容使用
document.write()
。问题是当前文档在初始页面加载时已经被打开、解析和关闭。如果现在从这些脚本之一调用document.write()
,它将清除当前文档并开始编写新文档。这将清空你的浏览器窗口,只写新内容(这肯定不是你想要的)
我能想到的选择是:
.src
属性加载,而不是通过ajax,这样内容就可以加载到新文档中,document.write()
可以完成正常的预期任务document.write()
。如果您控制该代码,则需要更改脚本以将内容插入特定的DOM元素,而不是尝试写入文档流,因为一旦原始文档被解析并关闭文档,文档流将无法以您想要的方式工作document.write()
(通过临时用不同的方法替换它),以便在加载动态内容时以不同的方式捕获document.write()
内容,然后动态地将其插入到某个现有DOM元素中,而不是使用实际的document.write()
。这确实是一种黑客行为,不能保证它在所有浏览器中都能正常工作不能对动态插入的内容使用
document.write()
。问题是当前文档在初始页面加载时已经被打开、解析和关闭。如果现在从这些脚本之一调用document.write()
,它将清除当前文档并开始编写新文档。这将清空你的浏览器窗口,只写新内容(这肯定不是你想要的)
我能想到的选择是:
.src
属性加载,而不是通过ajax,这样内容就可以加载到新文档中,document.write()
可以完成正常的预期任务document.write()
。如果您控制该代码,则需要更改脚本以将内容插入特定的DOM元素,而不是尝试写入文档流,因为一旦原始文档被解析并关闭文档,文档流将无法以您想要的方式工作document.write()
(通过临时用不同的方法替换它),以便在加载动态内容时以不同的方式捕获document.write()
内容,然后动态地将其插入到某个现有DOM元素中,而不是使用实际的document.write()
。这确实是一种黑客行为,不能保证它在所有浏览器中都能正常工作不能对动态插入的内容使用
document.write()
。问题是当前文档在初始页面加载时已经被打开、解析和关闭。如果现在从这些脚本之一调用document.write()
,它将清除当前文档并开始编写新文档。这将清空你的浏览器窗口,只写新内容(这肯定不是你想要的)
我能想到的选择是:
.src
属性加载,而不是通过ajax,这样内容就可以加载到新文档中,document.write()
可以完成正常的预期任务document.write()
。如果您控制该代码,则需要更改脚本以将内容插入特定的DOM元素,而不是尝试写入文档流,因为一旦原始文档被解析并关闭文档,文档流将无法以您想要的方式工作document.write()
(通过临时用不同的方法替换它),以便在加载动态内容时以不同的方式捕获document.write()
内容,然后动态地将其插入到某个现有DOM元素中,而不是使用实际的document.write()
。这确实是一种黑客行为,不能保证它在所有浏览器中都能正常工作不能对动态插入的内容使用
document.write()
。问题是当前文档在初始页面加载时已经被打开、解析和关闭。如果现在从这些脚本之一调用document.write()
,它将清除当前文档并开始编写新文档。这将清空你的浏览器窗口,只写新内容(这肯定不是你想要的)
我能想到的选择是:
.src
属性加载,而不是通过ajax,这样内容就可以加载到新文档中,document.write()
可以完成正常的预期任务docum
document.write = function(str) {
var oldtxt = $("#destdiv").html();
oldtxt += str;
$("#destdiv").html(oldtxt);
}