[英]extract variable from imported HTML/JS file
我有带有<script>
标记的HTML文件,在该<script>
中,除其他代码外,还有一个变量,用于保存数据数组。
我需要提取该var / data。
我唯一能想到的解决方案是在导入的文件中找到模式(使用filereader,在JSON.parse之前),并将其拆分为关键点,例如。 在阵列开始时
var data = [
并在末尾}];
但恐怕不是100%肯定。
在这种情况下,有什么干净的方法可以定位内部变量并将其提取出来?
HTML文件具有唯一的结构,但是每个文件的数组数据都不同。
这是您从外部页面或外部资源中加载脚本的方法,如果您不了解,则可以获取更多详细信息。
通过jquery加载moment.js,通过javscript eval加载脚本
仅将其复制粘贴到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);
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.