代码之家  ›  专栏  ›  技术社区  ›  Anil Namde

如何使JS在使用Ajax接收的HTML响应中执行?

  •  0
  • Anil Namde  · 技术社区  · 15 年前

    我有以下工作流程

    1. 使用页面上的div
    2. 使用ajax检索并转储到 潜水艇
    3. 使用html标记,一些JavaScript 被处决了。

    为什么会这样?可能的解决办法是什么?

    虽然我避免做这样的事情,但在一些旧代码中,像这样的实现是非常常见的。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Sean Kinsey    15 年前

    使用.innerHTML添加的脚本将不会执行,因此您必须自己处理。

    一种简单的方法是提取脚本并执行它们

     var response = "html\<script type=\"text/javascript\">alert(\"foo\");<\/script>html";
     var reScript = /\<script.*?>(.*)<\/script>/mg;
     response = response.replace(reScript, function(m,m1) {
         eval(m1); //will run alert("foo");
         return "";
     });
    alert(response); // will alert "htmlhtml"
    

    这将提取脚本,执行它们,并在原始数据中用“”替换它们。