2009-04-17 19 views
19

まず、JQueryの$(document).ready()メソッド内でdocument.write()を使用する方法はありますか?もしあれば、私の問題を解決するために私に手がかりを与えてください。

それ以外の場合、私は私の仕事をする人のコードを持っています。キャッチは、私は自分のコードを変更することは許されていないということです。

document.write('<img src=\"/image/1.jpg\" alt=\"Second image for id 1\">') 

スクリプト:

document.write('<script src=\"http://myurl.com/page.aspx?id=1\"></script>'); 

スクリプトタグは、一連のテストを行い、その後、そのような何かを吐き出すaspxページを参照している:動作しない部分は次のようになります実際に起こっていることの例に過ぎません。ここで問題となるのは、最初のスクリプトにdocument.write()があり、スクリプトのdocument.write()が最初のスクリプトに追加されていて、何とかJQueryの$( document).ready()関数で、コードを変更することはありません。

私は何をすべきかわかりません。助けて?

答えて

41

の要件を満たしていない場合、文書を実際に書いていない状態でdocument.writeを使用することはできません。

var phbRequirement = ""; 

$(function() { 
    document.write = function(evil) { 
    phbRequirement += evil; 
    } 
    document.write("Haha, you can't change my code!"); 
    $('body').append(phbRequirement); 

}); 

あなたがその前のdocument.write関数を上書きしていることを確認してください:あなたは、コードを変更しないで、本当に曲がっている場合は、そうとタック後の結果のようにdocument.write()の機能を無効にすることができます使用されている。あなたはいつでもそれを行うことができます。

その他の回答は退屈ですが、これは楽しいですが、与えられた要件を満たすために間違ったやり方をしています。

+0

ちょっと微調整して、私はこのアプローチを使用して問題を解決できました。どうもありがとう。あなたは私がこれに多くの時間を無駄にしないようにしてくれました! – Kappers

3

jQueryにはdocument.writeの代替手段があります。あなたが使用する必要があるのは、appendメソッドだけです。

jQuery('<img src=""/>').appendTo('body'); 

これはかなり自明です。しかし簡単に言えば、あなたはあなたが望むどんなhtmlでもそれを置き換えることができます。 appendToメソッドのタグ名は、HTMLを追加するタグの名前です。それでおしまい。

3

ピカードの答えは動作しますが、これは私のために、より直感的である:

$("body").append('<img src=\"/image/1.jpg\" alt=\"Second image for id 1\">'); 

また、のdocument.write()で挿入されているスクリプトの一部について、jQuery's getScript() function

6

ピカードが持ってチェックアウト私が使用したアプローチ。コンセプトに展開するには、読み取りを取る:

$('<script/>') 
    .attr('src', 'http://myurl.com/page.aspx?id=1') 
    .appendTo('body'); 

代替スタイルを:

var imgnode = $('<img alt="Second image for id 1"/>') 
    .attr('src', "image1.jpg"); 

$('#id1').append(imgnode); 

は、任意の動的属性を設定するattrメソッドを使用してください。特別なシンボルをそのようにエスケープする必要はありません。

また、スクリプトタグを動的に生成する効果についてはわかりません。私はそれを試みたことはありません。しかし、クライアント側のスクリプトが含まれているか、または参照されていることが予想されます。私の仮定は、page.aspxが返すものです。あなたの質問はあなたがそこでやろうとしていることについて少し曖昧です。

関連する問題