0

test1.html ファイル:

<html>
<head>
<script src="jquery-1.7.2.js">
</script>
<script>

function loadfn(){

$.get('test.html',function(data){

alert($(data).text());
//$('body div#returnData').html(data);
$.each(data, function(i, node) { 
    alert(i);
   if (node.tagName == "SCRIPT") {
       eval(node.innerHTML); 

   } else {
       $(node).appendTo($('#returnData')); 
   }

});

});
test1();
test2();
}
</script>
</head>
<body>
<div id="returnData" >
</div>
<input type="button" value="Click" onclick=loadfn()>
</body>
</html>

test.html :

<html>
<head>
<script src="/jquery-ui-timepicker-addon.js">
</script>
</head>
<script>
function test1(){
alert('test1 function');
}
</script>
<script>
function test2(){
alert('test2 function');
}
</script>
<body>
<div id="testdiv">
Text field : <input type="text" value="Test Value"/>
</div>
</body>
</html>

実際には、test.html ページを test1.html にロードしてから、そのページにあるスクリプト関数を実行する必要があります。

上記のコード スニペットは要件を満たしていません。コード スニペットで間違っていることを教えてください。

4

2 に答える 2

0

スクリプト要素をロードするには、このようなことをする必要があるので、私のアドバイスは、応答を受け取ったときにscript文字列を次のように置き換えることですscri" + "pt

var code = "<script>alert('Hi!');</scr"+"ipt>";
$('body').append($(code)[0]);
于 2012-04-19T18:07:54.227 に答える
0

DOM に「ロード」する必要はありません。スクリプトタグの場合は、次のことができます..

eval("<script>alert('Hi!');</script>");

アップデート :

結果にHTML ノードと SCRIPT ノードの両方が含まれる場合は、次の手順を実行します。

$.each(nodes, function(i, node) { //result might contain muliple HTML/Script nodes

   if (node.tagName == "SCRIPT") {
       eval(node.innerHTML); 
       //Appending to DOM also executes the script. So we do eval() instead, which does the equivalent.
   } else {
       $(node).appendTo($('#returnData')); //And append your HTML nodes to the desired target div
   }

});
于 2012-04-19T18:39:37.553 に答える