2010-11-20 10 views
2

私は、DOMの終わりまたは頭の部分以外の場所に外部JavaScriptを配置するためにeval(またはjQueryのgetScriptのいくつかの変形版)を使用できるかどうか疑問に思っていました。特定の場所にあるgetScriptまたはeval?

var script = document.createElement("script"); 
script.text = $(".code").val(); 
head.appendChild(script); 

var head = document.getElementById("fig"); 

代わりの

var head = document.getElementsById("head")[0]; 

をしかし、私はそれは関係なく、仕事を得るように見えることはできません。私が試してみました。 (コードは機能しますが、Firebugは#figのコードと、最後のページである</body>タグの直前のコードを示しています。

私が使用しているJavaScriptツールキットは、私は動的にユーザーの入力に基づいてjavascriptを変更しようとしています(したがって、私は実際には新しい外部JSファイルを参照することはできません - 私はむしろ理想的ではないevalを実行するでしょう)

私は、PHPや何かを使ってユーザー入力を「新しい」ファイルに保存し、その新しいPHPファイルを指すgetScriptを使用すると思われますが、非常にハッキーです。

もう一度ありがとう!

答えて

3

あなたが参照する「JavaScriptツールキット」はdocument.writeまたはを使用してページに出力を挿入しますか?

document.write = function(s) { 
    $('#fig').append(s); 
}; 

document.writeln = function(s) { 
    $('#fig').append(s + '\n'); 
}; 

、その後$.getScriptを使用してスクリプトをロードして実行します。もしそうなら、あなたは正しい場所にスクリプトの出力を追加するために、その関数をオーバーライドすることができます。

編集:それをやってのより堅牢な方法は、コードが追加された方法に応じて:アイデアの

var output = ''; 

document.write = function(s) { 
    output += s; 
}; 

document.writeln = function(s) { 
    output += s + '\n'; 
}; 

$.getScript('URL of script here', function() { 
    $('#fig').append(output); 
}); 
+0

天才!私はこれが "箱の外で考えている"という良い例だと思うし、あなたに帽子の先端! – Rio

関連する問題