このコードを使用して、ブラウザーからホスト文字列を取得するフレックス アプリケーションを作成しました。
ExternalInterface.call("window.location.host.toString")
このコード行は、Firefox と Opera の両方でホスト文字列を取得するために完全に機能します。ただし、IE を使用する場合、返される文字列は常に「null」です。そのような情報をブラウザから取得する必要があります。そのような文字列を取得する JavaScript 関数を定義し、アプリケーションからその関数を呼び出すことで回避策があることを私は知っています。ただし、私のアプリケーションでは、ネイティブ ソースからそのような情報を取得する必要があります。
誰かが同じ問題を抱えていてそれを解決できたのか、または IE で常に null になる理由を誰かが知っているのに、Firefox と Opera を使用しているときにそうではないのかと思っていました。
編集1:
生成された SWF ファイルを埋め込むための HTML コードを次に示します。たぶん、これは間違いを見つけるのに役立ちます
<object id="myTest1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
<param name="movie" value="http://www.website.com/test.swf" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<embed id="myTest1" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.website.com/test.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>
id、classid、allowScriptAccess は次のように設定されています。
何か案が?
編集2:
for Lior Cohen Flex ファイルは、最初のリンクで使用されている例です。サブディレクトリ history には、history.js、history.css、および historyFrame.html が含まれています。生成された SWF ファイルを含む HTML ページは次のようになります。
<html>
<head>
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css"/>
<script src="history/history.js" language="javascript"></script>
<!-- END Browser History required section -->
</head>
<body>
<object id="file1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
<param name="movie" value="file.swf" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<embed id="file2" pluginspage="http://www.macromedia.com/go/getflashplayer" src="file.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>
<body>
</html>
ただし、これはまだ期待どおりに機能していません。
編集3:
問題を発見しましたが、修正できません。この問題は、ExternalInterface や object および embedded HTML タグではなく、IE の JavaScript エンジンに関係しています。
私の場合、JavaScriptを使用して作成されたdivにオブジェクトと埋め込みタグを書き込み、DOMメソッドを使用してこのdivをボディの最後に追加します。ただし、このようなアプローチにより、InternalInterface は常に IE で null を返します (ただし、Firefox や Opera ではそうではありません)。
var swfDiv = document.createElement('div');
swfDiv.innerHTML = '<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
document.body.appendChild(swfDiv);
document.write を使用して HTML コンテンツを追加しようとしたため、IE で完全に機能しましたが、document.write はページ全体に書き込み (古いコンテンツを削除) しましたが、これは望ましくありません。
document.write('<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>');
これを修正する方法はありますか?
ありがとう