2011-08-01 4 views
0

URLからjQueryに返されるJavaScriptがあります。このJavaScriptにはdocument.write(...)ステートメントがあります。私はリンクをクリックして、の出力をdocument.write(...)コマンドののdivに挿入したいと考えています。JavaScript出力が画面を越え、jQuery経由でコンテナ要素にロードされない

JavaScriptのevalを試してみるために、JavaScriptのevalを使用して、指定したurlソースのdivにスクリプトタグを挿入して、すべて(jQuery load()、getScript()、get()、ajax JavaScriptの書き込み(...)コマンドの最終結果)、私が何をしても、画面全体が引き継がれ(白抜き/白くなる)、JavaScriptの出力はのものしか画面に表示されず、そのコンテンツの代わりにちょうどdivに終わる。

これがなぜ起こっているのか、なぜそれがコンテナ要素にロードされないのかについてのアイデアはありますか?

もう1つ重要な詳細です。 HTMLのスクリプトタグでurlを使用すると、divにコンテンツの詳細が読み込まれます。

???

ここ

はdiv要素の中に生成されたJavaScriptをロードする私の現在のビューのコードは、代わりの出力のうち、JavaScriptは言った:

$(function($) { 
    $('#update_preview').click(function() { 

     event.preventDefault(); 

     $('#preview').load('<%= url_for :controller => 'items', :action => 'preview', :id => @cf.id, :only_path => false %>'); 

    }) 
    }) 
}); 
+0

には、目的の機能に最も近いコード例が追加されています。問題は、javascriptをHTMLの文字列として評価して#preview divに配置する必要がありますが、代わりにブラウザウィンドウ全体を書き換えるだけです。 – sands

+0

つまり、返されたJavaScriptに対してeval()を使用しようとすると、画面全体を引き継ぎます。 JavaScriptを評価しないソリューションは私のJSコードを返します(例:var txt = "some txt"; document.write(txt);) – sands

+0

まあ、私はdocument.write(...)ページの読み込み後には機能しないため、この方法が機能していないという理由があります。しかし、これは私がページに埋め込みウィジェットとしてコンテンツを読み込むために使用するメソッドなので、両方の状況で動作する代替は何ですか? – sands

答えて

0

あなたはこの

document.getElementById("display").innerHTML = returnvariablehere; 

<div id="display"> </div> 
+0

でも、URLを変更するのではなく、DOMを完全にリセットして、コンテナdivに注入するだけの評価済みのJavaScriptに置き換えて、画面を引き継ぎます。 – sands

0

ようinnerHTMLプロパティを使用することができます最初のページの読み込み後にdocument.write(...)が機能しないため、画面が再描画されていました。したがって、DOMをワイプし、JavaScriptが評価された時点からやり直していました。

最後に、生のHTMLを出力するためにサーバー側のコードを書き直し、jQuery.ajaxによって返されたデータを置き換えるためにjQuery.htmlを使用する必要がありました。

最後に、初期ページのレンダリング時にロードが保証されていない限り、ページに書き込むJavaScriptをロードすることはできません。

関連する問題