2012-02-03 28 views
4

最終更新:2番目のコードブロックが機能しています - URLの入力が間違っていました。iframeに動的JavaScriptタグを挿入する方法

私は動的に作成されたスクリプトをiframeに配置しようとしています。 iframeの先頭にアクセスできますが、追加要求を受け入れていないようです。コンソールログ呼び出しでheadタグが返され、次のテキストの本文への追加がうまくいきます。また、スクリプトタグを本文に追加しようとしました。 (注:scriptタグは同じドメインにないので、getScriptやajaxの使用は避けています)。

ここに、以下の提案に基づいてスクリプトを正常に追加する新しいバージョンがありますが、スクリプトは評価されません(単純な警告でテストされたとおり)。プラス、別の奇妙さ: "働く"アイコンが約15秒間表示され、ステータス(クロム)が "取り込み中"と表示されます。最終的には停止しますが、何も起こりません。

$(document).ready(function() { 
    $('<iframe></iframe>', { 
     name:"contentFrame" 
     ,id:"contentFrame" 
    }).css("height", 300).css("width", 500).load(function() { 
     var script = document.createElement("script"); 
     script.type = "text/javascript"; 
     script.src = "//cross-domain.com/script.js"; 
     console.log($(this).contents().find("head")); 
     $(this).contents().find("head")[0].appendChild(script); 
     $(this).contents().find("body").append("Test"); 
    }).appendTo("#content"); 
}); 

更新:カーソルアイコンが最終的に作業を完了すると(それが1行のコードでローカルサーバーだから奇数で約10秒、)、私はクロームコンソールでこのメッセージが表示されます(それが持つすべての赤であります赤い円の横にある「X」アイコン):

GET http://cross-domain.com/script.js 
(anonymous function)temp.html:16 
jQuery.event.dispatchjquery-1.7.1.js:3261 
jQuery.event.add.elemData.handle.eventHandlejquery-1.7.1.js:2880 
jQuery.fn.extend.appendjquery-1.7.1.js:5771 
jQuery.fn.extend.domManipjquery-1.7.1.js:5973 
jQuery.fn.extend.appendjquery-1.7.1.js:5769 
jQuery.each.jQuery.fn.(anonymous function)jquery-1.7.1.js:6162 
(anonymous function)temp.html:18 
jQuery.Callbacks.firejquery-1.7.1.js:1049 
jQuery.Callbacks.self.fireWithjquery-1.7.1.js:1167 
jQuery.extend.readyjquery-1.7.1.js:435 
DOMContentLoaded 

答えて

2

それは、実際に働いてもよいが、スクリプトタグがちょうど見えないこの答えhttps://stackoverflow.com/a/3603496/220299

を参照してください。

+0

従って、JQueryを「追加」することはできませんが、従来のスクリプト方法を使用すると問題はありませんか? – scader

0

これを試してください。

$(document).ready(function() { 
    $('<iframe></iframe>', { 
     name:"contentFrame" 
     ,id:"contentFrame" 
    }).css("height", 300).css("width", 500).load(function() { 
     $(this).contents().find("head").append('<scr' + 'ipt type="text/javascript" src="//cross-domain.com/script.js"></scr' + 'ipt>'); 
    }).appendTo("#content"); 
}); 
+0

これは機能しませんでした。 – scader

関連する問題