素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

文字列からDocumentを作る(well-formedじゃなくてもOK)

XSLTProcessor+createContextualFragmentとnsIScriptableUnescapeHTML+parseFragmentの違い - ロックスターになりたいには載っていない、iframeを使う方法。

それとどの方法を使ってもHTML文字列に含まれていたHEAD,TITLE,BODYタグはなくなっちゃって子要素が一段昇格して親要素に取り込まれるようです。

http://d.hatena.ne.jp/ku0522/20071018/1192703626

の問題も起こらない。

function createDocumentByString (str) {
  var iframe = document.body.appendChild(document.createElement('iframe')),
      d = iframe.contentDocument;
  iframe.style.display = 'none';
  d.open();
  d.write(str);
  d.close();
  iframe.parentNode.removeChild(iframe);
  return d;
}

document.bodyにiframeを入れてすぐremoveChildしているのは、documentに追加しないとcontentDocumentが生成されない為。