簡體   English   中英

從導入的HTML / JS文件中提取變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM