2011-10-26 12 views
1

を通してそれを操作するために、XMLにはiframeのコンテンツタイプを変更する:は、XMLを表示し、私は次の操作を実行するためにJavaScriptを使用したいDOM

  1. はiframe内に
  2. 表示にそれをXMLファイルを作成し
  3. はDOM

私はXMLエディタを構築していてコンテンツを操作し、iframe内のXMLを表示する問題を抱えています。

これは私が現時点で使用しているコードです。 tsite.contentType('text/xml')はiframeなし

function previewContent(what){//changes the content of an iFrame 
    var tsite = document.getElementById('xmlinside').contentDocument; 
    tsite.open(); 
    tsite.contentType('text/xml'); 
    tsite.writeln(what); 
    tsite.close(); 
} 

function makeXML(){ 
    var tester = '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\ 
    <bookstore>test</bookstore>'; 
    previewContent(tester); 
} 

単にtestを表示します。

ソースを確認すると、まだ追加された行が<bookstore>test</bookstore>で、xmlバージョンがコメントになっています。

私はスタイルシートなしでブラウザのように表示したいと思います。 Safariは、関連する書式設定がない場合は、xmlファイルとして表示します。これは完璧です。それは混乱しているコンテンツタイプですか?だから私はそれを変更しようとしましたが、これは間違ったコードです。どんな助けも素晴らしいだろう!

答えて

0

心に留めておくべきいくつかのこと...

1)それはコンテンツがAJAX経由でロードされる場合は、アプリケーション/ xmlのメディアタイプ/ MIMEを使用する必要がありますし、最初の要素を持たなければなりません名前空間...

<div id="root_most_ajax_element" xmlns="http://www.w3.org/1999/xhtml"> 
<p>ajax content</p> 
</div> 

2)を、彼らはinnerHTMLプロパティに大きく依存しているとして、innerHTMLプロパティ(およびフレームワークを使用しないでください)、最も特に負荷AJAXロードされたコンテンツと一緒にそれを使用することはありません、Microsoft独自のメソッドが正しく登録されません。 DOMのように、コードはそこにあるのが分かりますが、本当はそこにはありませんその時点では全く信頼できません。 JavaScriptを使用する場合は、importNodeメソッドを使用してAJAX読み込みコンテンツを読み込みます(iframeを使用する代わりに、代わりにdiv要素に読み込むことができます)。

3)同じドメインから読み込まれていないiframeの(X)HTMLにアクセスすることはできません(そうしないでください)。そうでないと、第三者のウェブサイトから読み込まれている場合あなたはテキストを操作して情報(彼らが何かにサインインしているなら電話、電子メールなど)を発見すると言うことができます。

これらの3つの条件を満たす場合は、あたかもiframeやAJAXがないかのようにコードを操作する必要があります。

関連する問題