実行時にJS関数のコードを置き換える方法は? (C++ 関数ポインターと同じ機能)
を試しeval()
ましたが、パラメータの 1 つに 13 や 10 などのバイト値が含まれていると、エラーがスローされます。
このことから、eval は実際にはすべての字句アトムを評価し、それらをその内容に置き換えていることがわかります。
これらは、私が探している機能を説明するためのサンプル ファイルです。
ファイル 1: index.html
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","dynamic_code.php",false);
xmlhttp.send();
var dynamic_code=xmlhttp.responseText;
function dynamic_function (){
eval(dynamic_code)
}
dynamic_function ()
ファイル 2: dynamic_code.php
some_file=new XMLHttpRequest();
some_file.open("GET","some_file.txt",false);
some_file.send();
var some_file_content=some_file.responseText;
alert(some_file_content);
ファイル 3: some_file.txt
line1
line2
line3
ブラウザから返されたエラー:
> Uncaught exception: SyntaxError: at line 2, column 0: expected
> expression, got '<' Error thrown at line 12, column 4 in
> dynamic_function() in http://my_ip/dummy/index.html:
> eval(dynamic_code) called from line 15, column 0 in http://my_ip/dummy/index.html:
> dynamic_function ()