如何处理 XMLHttpRequest 下载文件中的 javascript? [复制]

Posted

技术标签:

【中文标题】如何处理 XMLHttpRequest 下载文件中的 javascript? [复制]【英文标题】:How to process javascript from XMLHttpRequest donwnloaded file? [duplicate] 【发布时间】: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>

【问题讨论】:

***.com/questions/2592092/… 你使用 XMLHttpRequest#onreadystatechange 注定要失败——你需要学习如何使用 XMLHttpRequest 【参考方案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Ό

以上是关于如何处理 XMLHttpRequest 下载文件中的 javascript? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何处理不安全的 XMLHttpRequest 端点 [重复]

scrapy中如何处理大文件下载?

如何处理重定向请求以响应浏览器上的下载文件。

批处理脚本通过ftp下载文件,我该如何处理覆盖

求selenium 如何处理IE浏览器下的下载文件框

org.apache.commons.net.ftp.FTPClient下载中文文件夹乱码如何处理?