从导入的 HTML/JS 文件中提取变量

extract variable from imported HTML/JS file

本文关键字:文件 提取 变量 JS 导入 HTML      更新时间:2023-09-26

我有<script>标签的HTML文件,并且在该代码中有一个保存数据数组的变量。
我需要提取该变量/数据。
我能想到的唯一解决方案是在导入的文件中查找模式(在 JSON.parse 之前使用文件阅读器),并将其拆分为关键点,例如。阵列启动时

var data = [ 

最后}];但恐怕这不是100%确定的。
在这种情况下,是否有任何干净的方法可以针对内部变量并将其提取?
HTML 文件是唯一结构的,但每个文件的数组数据都不同。

这是您从外部页面或外部资源加载脚本的,如果您不理解,可以更多详细信息。

时刻.js通过jquery加载,通过 JavScript 评估加载的脚本

仅在 Chrome 控制台中复制粘贴以下内容,并了解发生了什么:

//In my example using plain html let say ajax result or jquery load
//Note that if <script src="https://code.jquery.com/jquery-1.10.2.js"></script> here different approach is required 

$.getScript( "http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js" )
  .done(function( script, textStatus ) {
    parseScript(true);
  });
function parseScript(go)
{  
    if (go)
    {
        var xhr = $('<div><script>alert("Evaluated becouse values are not set");</script><script>var1=0;</script><div class="xx"></div><script>cars =["Saab", "Volvo", "BMW"];</script><div><script>alert("Not executed because values are set")</script></div></div>');
        //var1 in global scope
        var1 = undefined;
        //cars in global scope;
        cars = undefined;
        $(xhr).filter("script").each( function(e) { 
            if (var1 != undefined && cars != undefined ) return;
            console.log(moment().format('MMMM Do YYYY, h:mm:ss a') + '  ______ script executed ' + $(this).html());
            eval($(this).html());
            alert(moment().format('MMMM Do YYYY, h:mm:ss a') + ' _______ var1: ' + var1 + ' cars: ' + cars);
        });
    }
}