4

フレックス アプリケーションを使用する Firefox 拡張機能を作成しようとしています。私は XUL タイプ (<iframe> と <browser>) でラップしようとしましたが、どちらを使用するかについて好みはありません... どちらでも機能します。

問題は、相対パス (chrome:// または mySWF.html からのアクセス) を使用するたびに、フラッシュの読み込みに失敗することです。

私は絶対パスを検索する方法を持っていますが (以下に掲載されています)、iframe またはブラウザーのいずれかの src を動的に変更する方法を一生理解できません。

 <script type="text/javascript">
 function loadSWF() {
  alert("loadSWF!");
  var fullPath = "file:///" + extensionPath.path.replace(/\\/g,"/") +  "/chrome/content/HelloWorld.html";
  top.document.getElementById('AppFrame').setAttribute("src",fullPath);
 }
 </script>

以下は、フレックスアプリを呼び出す2つの方法です。

 <iframe
  type="content"
  src=??????
  flex="1"
  id="AppFrame"
  name="AppFrame"
  onLoad="loadSWF();"/>

 <browser 
  id="browserid"
  type="content"
  src=??????
  flex="1"/>

関数を呼び出して src 属性を設定するにはどうすればよいですか???

4

1 に答える 1

1

1) 動的設定srcは正常に機能します (以下のテストケースを参照)。

2)ファイルの URL を取得するには、手動で変換する代わりにnsIIOService.newFileURI() を使用します。

3)onLoad="loadSWF();"あなたの iframe が疑わしい場合は、すべてがどのように適合するかを示す完全な XUL コードを投稿する必要があります。iframe のロード ハンドラからではなく、XUL ドキュメントのロード ハンドラから、または別のイベントから loadSWF を呼び出す必要があります。

#1 のテストケース:

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
<script type="text/javascript">
<![CDATA[
function f() {
 document.getElementById("z").setAttribute("src", "http://google.com/")
}
]]>
</script>
<iframe type="content" id="z"/>
<button onclick="f()"/>
</window>
于 2011-07-17T10:50:50.170 に答える