Разница в JavaScript между document.write и DOM element.AppendChild (text) - PullRequest
2 голосов
/ 20 октября 2011

Я хочу встроить и показать флэш-файл. Он отлично работает с document.write, но когда я попытался с AppendChild (text), он показывает не флэш, а чистый текст. Какой метод DOM использовать вместо этого?

  <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>

Ответы [ 2 ]

2 голосов
/ 20 октября 2011
(function () {
    var myEmbed = document.createElement("embed");
    myEmbed.type="application/x-shockwave-flash";
    myEmbed.height='100';
    myEmbed.width='100';
    …
    document.getElementById("test").appendChild(myEmbed);
}());

На первый взгляд такой подход часто может показаться излишне шумным и бесполезным, но он гораздо разумнее интегрируется с естественным синтаксисом HTML. Если вы хотите иметь возможность писать HTML прямо в ваш документ, вы можете быть более довольны такой инфраструктурой, как jQuery, которая допускает синтаксис, такой как:

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

Однако, если вы просто делаете все это для встраивания Flash, используйте swfobject .

2 голосов
/ 20 октября 2011

Поскольку вы создаете текстовый узел, а не сериализованный 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...