2011-10-20 15 views
2

Flashファイルを埋め込んで表示したい。それはdocument.writeとうまく動作しますが、AppendChild(テキスト)を試してみると、Flashではなく純粋なテキストが表示されます。その代わりにどんなDOMメソッドを使うのですか?document.writeとDOM要素のJavaScriptの違い.AppendChild(テキスト)

<html> 
    <head> 
<script> 
    function addText(text,elementId){ 
    if (document.createTextNode){ 
     var mytextNode=document.createTextNode(text) 
     document.getElementById(elementId).appendChild(mytextNode) 
    } 
    } 

    </script> 

    </head> 

    <body> 

       <div id="test"> 

       </div> 

    <script> 
     addText("<embed height='100' width='100' type='application/x-shockwave-flash' allowscriptaccess='always' wmode='transparent' quality='high' swliveconnect='true' name='test' id='test' src='test.swf'>",'test'); 
    </script>  
    </body></html> 
+0

'.innerHTML'を使用しましたか? –

+0

代わりにdocument.createElement()が必要だと思います。 –

+0

これは役立つかもしれません。http://stackoverflow.com/questions/367214/document-write-vs-inserting-dom-nodes-preserve-form-information –

答えて

2
(function() { 
    var myEmbed = document.createElement("embed"); 
    myEmbed.type="application/x-shockwave-flash"; 
    myEmbed.height='100'; 
    myEmbed.width='100'; 
    … 
    document.getElementById("test").appendChild(myEmbed); 
}()); 

一見すると、このようなアプローチは、多くの場合、不必要にうるさいと価値がないように見えることができますが、それはHTMLの自然な構文ではるかsanely統合しています。 、

$("<embed src='…'/>") 

しかし、あなただけのFlashを埋め込むために、このすべてをやっている場合:あなたが直接あなたのドキュメントにHTMLを書くことができるようにしたい場合は、次のような構文を使用できますjQueryのようなフレームワーク、と幸せになるかもしれませんswfobjectを使用してください。

+0

どちらも答えが良い、私はあなたにポイントが少ないので、あなたに帰属;) – user310291

+0

LOL、それは面白い理由です。物事のバランスを保つため、@alexに+1を与えます。 :P – kojiro

2

シリアライズされたHTMLではなく、テキストノードを作成しているためです。

あなたは

function addHTML(html, elementId) { 
    if (document.createElement) { 

     var holder = document.createElement('div'); 

     holder.innerHTML = html; 

     var target = document.getElementById(elementId); 

     while (holder.hasChildNodes()) { 
      target.appendChild(holder.firstChild); 
     } 
    } 
} 

jsFiddle ...に機能を変更することができます。

+0

ありがとう、残念ですが、2つの良い答えを確認することはできません。 – user310291

関連する問題