在ajax响应中执行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()将其内容写入适当位置的最干净/最简

我正在使用ajax(结合jQuery)更新网页的某些部分。 查询返回要在不同位置插入的html

然而,这些html块有时包含编写东西的javascript 他们所在的地方。我的意思是,在AJAX返回的html的某些div中,包含了一个脚本,该脚本执行一些document.write()指令(通常是我们无法控制的ads发行商的脚本)

现在,如果我只获取AJAX查询返回的html并用它更新DOM,javascript将不会执行。

确保document.write()将其内容写入适当位置的最干净/最简单的方法是什么?

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

我能想到的选择是:

  • 将内容放在iframe中,并通过
    .src
    属性加载,而不是通过ajax,这样内容就可以加载到新文档中,
    document.write()
    可以完成正常的预期任务

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

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


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

    我能想到的选择是:

  • 将内容放在iframe中,并通过
    .src
    属性加载,而不是通过ajax,这样内容就可以加载到新文档中,
    document.write()
    可以完成正常的预期任务

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

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


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

    我能想到的选择是:

  • 将内容放在iframe中,并通过
    .src
    属性加载,而不是通过ajax,这样内容就可以加载到新文档中,
    document.write()
    可以完成正常的预期任务

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

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


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

    我能想到的选择是:

  • 将内容放在iframe中,并通过
    .src
    属性加载,而不是通过ajax,这样内容就可以加载到新文档中,
    document.write()
    可以完成正常的预期任务

  • 将这些脚本更改为不使用
    docum
    
    document.write = function(str) {
      var oldtxt =   $("#destdiv").html();
      oldtxt += str;
      $("#destdiv").html(oldtxt);
    }