0

Firefox アドオン内から Flash オブジェクトを埋め込みたいと考えています。

これは画像で行うことができます:

imgTest = function(document){      
  var h = document.getElementsByTagName("body")[0];            
  var img = document.createElement("img");
  img.src = 'chrome://extname/content/image.jpg';      
  h.appendChild(img);
}

同じことを Flash で行うと、Flash オブジェクトは表示されません。

flashTest = function(document){      
  var h = document.getElementsByTagName("body")[0];            
  var ob = document.createElement("object");
  var embed = document.createElement("embed");
  embed.type = 'application/x-shockwave-flash';
  embed.src = 'chrome://extname/content/flash.swf';
  ob.appendChild(embed);      
  h.appendChild(ob);
}

Firebug を見ると、オブジェクトは追加されていますが、埋め込みはグレー表示されています。

これは可能ですか?

4

1 に答える 1

0

これは、ブラウザーのコンテンツ領域にロードされた Web ページを指していると思いdocumentます (少なくとも、XUL ドキュメントではなく、HTML ドキュメントを持っているようです)。問題は、この Web ページへのアクセスが許可されていないことですchrome://extname/。拡張機能のコンテンツに Web ページからアクセスできるようにしたい場合は、次のように でcontentaccessibleフラグを指定する必要がありますchrome.manifest

content extname chrome/path/ contentaccessible=yes

サイドノード: プロパティを設定するとすぐに画像が同期的にロードを開始するため、たまたま画像に対して機能します。srcしたがって、リクエストの発信者は拡張機能であり、リクエストは許可されます。Flash オブジェクトは、ドキュメントに挿入された後、非同期でのみ読み込みを開始します。ここで、リクエストの発信元は Web ページであり、この場合、それを作成することは許可されていません。

于 2012-05-29T12:31:55.083 に答える