2016-11-29 3 views
0

ダウンロードしたhtmlファイルからjavascriptを実行します。私はXMLHttpRequestを使ってhtml応答を取得します。輸入XMLHttpRequestからjavascriptを処理する方法は、ファイルをdonwnloaded?

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> 
+2

http://stackoverflow.com/questions/2592092/executing-script-elements-inserted-with-innerhtml – epascarello

+0

のXMLHttpRequest#のonreadystatechangeにのご使用は失敗する運命にある - あなたは、XMLHttpRequestの –

答えて

0
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について読む必要があります。

+0

ああを使用する方法を学ぶ必要がある、良いですHTML上の古い正規表現 - 私は[トニーの足音]を聞いた(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

+0

あなたができる上記はevalに頼ることなく、複数のスクリプトタグを許可し、src属性を持つスクリプトタグを許可し、ZA̡͊͠͝LGONを呼び出すことなく許可する –

関連する問題