2009-04-17 19 views
2

私は誰かのページに貼り付けてiFrameを作成できるJavaScriptスクリプトを作成しました。 iFrameを表示したい場所にスクリプトを貼り付けることができるようにしたいと思います。JavaScriptで新しい要素を追加するにはどうすればよいですか?

しかし、スクリプトを貼り付けた場所にDOMで作成したiFrameを追加する方法がわかりません。それは常にそれを身体の最下部に付加します。

どのように追加するのですか?

答えて

11

Mm。あなた行うことができます:

document.write("<div id='iframecontainer'></div>"); 
document.getElementById('iframecontainer').innerHTML = '...'; 

しかし、それは、異なるレベルの多くの間違った/醜い感じています。私は他の選択肢を知らない。

EDIT:実際には、迅速なGoogle検索はdocument.writeが醜いとあなたがにしている特定のピクルスのための素晴らしい選択肢である理由を説明したthis artlcleを明らかにした:あなたのscriptタグIDを与えます!

<script id="iframeinserter" src=".."></script> 

そして、あなたはスクリプトタグへの参照を取得し、その前にIFRAMEを挿入することができます。

var newcontent = document.createElement('iframe'); 
var scr = document.getElementById('iframeinserter'); 
scr.parentNode.insertBefore(newcontent, scr); 
+1

私はあなたのソリューションが好きです。 :) –

+0

編集は素晴らしい解決策です。 – iamdash

1

ユーザーはインラインフレームがあるべき場所になる要素のidを与えることができる場合iframeをページ上のどこに移動するかをcssを使用するだけで可能です。

2

IDなしで、最後の<スクリプト>要素を探して、パウロの答えを行うこともできます。これは、onloadイベントに入れることができる

var scripts= document.getElementsByTagName('script'); 
var script= scripts[scripts.length-1]; 
script.parentNode.insertBefore(d, script); 

/準備:JavaScriptがまだ解析されていない現在のスクリプトブロックの終了タグの過去のすべてのコンテンツ(*)を保証しているためこれは、私たちがしているスクリプトブロックである必要がありますあなたが好きであれば 'var script'は包含時に準備された関数ではなく計算されなければなりません(実行時に、より多くの<スクリプトが解析されます)。

(*:<スクリプトの場合を除く)

+0

これは、一意のIDを推測する問題を解決します(W3C HTML5 [spec](http://www.w3.org/TR/html5/dom.html#the-id-attribute)に従って)。このスクリプトをページのいくつかの部分にドロップしたいのであれば、idは@Paulo Bergantinoの答え – ejsuncy

関連する問題