【问题标题】:How to process javascript from XMLHttpRequest donwnloaded file? [duplicate]如何处理 XMLHttpRequest 下载文件中的 javascript? [复制]
【发布时间】:2017-04-13 13:09:39
【问题描述】:

我想从下载的html 文件中执行 javascript。我使用 XMLHttpRequest 来获取 html 响应。

function load2element() {

    localStorage.setItem("geadele", "cool variable is passed");

    var client = new XMLHttpRequest();
    client.open('GET', '/geadele/geadele/gesurvey.html');
    client.onreadystatechange = function() {
        el.innerHTML = client.responseText; // << file with javascript 
    }

    client.send();
}

导入的gesurvey.html 包含用于执行的javascript代码:

<script>
    console.log("From gesurvey.html");
    console.log(localStorage.getItem("geadele")); // should "cool variable is passed"
</script>

<div>I am survey</div>

【问题讨论】:

标签: javascript


【解决方案1】:
function load2element() {
  localStorage.setItem("geadele", "cool variable is passed");
  var client = new XMLHttpRequest();
  client.open('GET', '/geadele/geadele/gesurvey.html');
  client.onreadystatechange = function() {
    var regex = /<script\b[^>]*>([\s\S]*?)<\/script>/g;
    var scriptContent = regex.exec(client.responseText);
    if (scriptContent.length) {
        var scriptTbExecuted = '"use strict"; ' + scriptContent[1];
        eval(scriptTbExecuted);
    }
  }
  client.send();
}

但是,执行 eval 是危险的。严格模式消除了一些有害行为,但您需要阅读 strict mode 中的 eval 信息,考虑您想要的内容和该脚本的内容。

【讨论】:

  • 啊,HTML 上的旧正则表达式 - 我听说 Tony's hooves
  • 您可以在不使用 eval 的情况下执行上述操作,并且允许多个脚本标签,甚至允许具有 src 属性的脚本标签,并且无需调用 ZA̡͊͠͝LGΌ
猜你喜欢
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
相关资源
最近更新 更多