2

Flash Player がオンになっている現在の URL を取得しようとしています。.swf ファイルの URL ではなく、ブラウザが指している URL です。これまで私は使用してきました:

var st:String = ExternalInterface.call("window.location.href");

残念ながら、これは IE では機能しません。私の調査によると、どちらの方法でも IE では機能しないことがわかります。

私がインターネットで見つけた他の唯一のものは、タグに「id」タグを付けることです。

だから私はできるかどうか、および/またはどのようにできるかを調べようとしています:

  1. どういうわけか、IE やその他のブラウザーで ExternalInterface を使用して呼び出しを行い、現在の URL を返します。

    また

  2. タグに id="PA" 属性を付けて、AS3 にそのタグを読み取らせ、JavaScript を使用せずに文字列として取り込みます。

私の制限は、タグを HTML にのみ追加でき、JavaScript 関数を追加できないことです。これは AS3 で厳密に行う必要があります。

いずれにせよ、現在の URL を知る必要があります。どんな助けでも大歓迎です。

4

4 に答える 4

5

IE で動作させるには、いくつかのことが必要です。まず ActionScript:

var domain:String = ExternalInterface.call('function () { return window.location.href; }');

次に、タグに有効なclassidおよび id属性が必要です。<object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myplayer_123123" ...>

これらの属性を指定しない場合、ExternalInterface.call は IE6/7/8 では常に null を返しますが、Firefox では期待どおりに動作します。

3 番目に、ExternalInterface の使用を有効にするために、パラメーター allowScriptAccess を「always」に設定する必要があります。

<param name='allowScriptAccess' value='always'/>
..
<embed allowscriptaccess='always' ...>

.....

于 2009-10-14T20:17:33.173 に答える
0
ExternalInterface.call('window.location.href.toString');
于 2009-09-25T17:31:20.150 に答える
0

ただの提案:

これは、何らかの理由で IE がwi​​ndow.location.href を function として使用できると判断したためと考えられます。馬鹿げていますが、それがマイクロソフトです。

ExternalInterface.call( "String", "window.location.href" ) を試しましたか? それが私の次の推測です。

于 2009-09-25T15:47:04.010 に答える
-1

外部呼び出しなしで目的を達成することについて考えたことはありますか?

var domain:String = loaderInfo.loaderURL;
trace(domain.substr(0, domain.indexOf("/", 8))); //Searches for first instance of "/" after the 8th character.

上記では、indexOf を使用してベース ドメインをトレースし、swf へのフル パスから部分文字列を作成しています。8 番目の文字の後に "/" の最初のインスタンスを検索して、部分文字列の終点を返します。8 文字にする理由は、http:// と https:// を許可するためです。最初の「/」を見ないようにする必要があります。これをテストしたところ、うまくいきました。

ExternalInterface 呼び出しに問題はありませんが、必要な場合に備えて保存する傾向があります。

于 2009-09-26T12:44:50.067 に答える