0

Chrome拡張機能を開発しています。ユーザーに情報を表示するために、IFrameを作成してページのDOMに追加します。iframeが特定の種類のページ(XMLとChromeページ)にそのソースを読み込まない

Iframeには、自分の内線で定義されたテンプレートが含まれています。

  • なRSSフィードなどのXMLドキュメント==>私は本当にこのを解決する必要があります:私は、特定のページに私の拡張子を開こうとする場合を除き、

    ほとんどのページでは、これとこれまでのところ問題ありません。

  • 特定のChromeページ==>この使用例は本当に気にしません。

私が作成し、ユーザーが自分の拡張子を開くには、次の方法ではiframeを管理:

var iframe = document.createElement('iframe'); 
iframe.id = "my_awesome_iframe"; 

// Then I specify the source: I ask chrome to look for it. 
// I have checked the correct URL is returned. No problem so far here. 
iframe.src = chrome.runtime.getURL("templates/page.html'); 

// Here the problems start: 
// with a normal page: No problem 
// with an XML document: I have the error: "style is undefined, can't set cssText" 
iframe.style.cssText = 'height: 100% !important; width: 100% !important;'; 

// I can solve this doing the following: 
iframe.setAttribute("style", 'height: 100% !important; width: 100% !important;'); 

// And finally 
document.body.appendChild(iframe); 

しかし、今、すべてが正しく設定されています。上記のケースのいずれかにいるときはいつも、srcのURLはでロードされていませんです。 DOM内にiframe要素がありますが、それはただ空です。どのようにこの問題を解決するには

document.getElementById("my_awesome_iframe").contentWindow 

// As expected, I obtain the following only when the iframe refuses to load. 
>> undefined 

任意のアイデア:

だけで確認することは、私は次のことを試してみましたか?

ユーザーがXMLフィードなどのRSSフィードを使用しているときに、私の拡張機能を読み込むことができる必要があります。私の延長の要点の一つです。


追加情報:

私の拡張子はまったく同じ実装とのFirefoxと互換性があります。動作は少し異なります。 XML文書がRSSフィードであるときに、何か他のときにmmy拡張子を開くことはできます:それは不可能です。

例リンク:

一部XMLViewer-が存在しなければなりません特定のものですが、私はどこを探すべきかわかりません...

+0

は「http://www.w3.org/1999/( 'IFRAME = document.createElementNSをお試しくださいあなたのCSSはここにある/ *) ' – wOxxOm

+0

@wOxxOm:あなたは岩です!それはうまくいった。私はあなたの幸運を良いものとしてフラグすることはできません。普通の回答としてコピー/貼り付けできますか) ありがとうございます。 –

答えて

1

XML文書は、名前が必要です作成した要素のためのペース:

var iframe = document.createElementNS('http://www.w3.org/1999/xhtml', 'iframe'); 

と属性は次のように設定する必要があります。

iframe.setAttributeNS(null, 'style', '/* your CSS here */'); 
関連する問題