2011-11-18 12 views
5

私は2つの異なるjavascript関数を呼び出すフラッシュアプ​​リケーションのボタンをいくつか持っています。彼らはIE9を除くすべてのブラウザで動作します(これまでのIEは試していません)。関数を呼び出すために私のコードは次のようなものです:FlashからJavascriptへの呼び出しがIE9で失敗するのはなぜですか?

ExternalInterface.call(
     "myLovelyFunction", 
     string1, string2); 

とJSのコードは次のようになります。IE9で

function myLovelyFunction(string1, string2) { 
    window.open('https://twitter.com/share?url=http%3A%2F%2Fwww.mysite.com%2Fapage.php&via=atwitteraccount&text=Some%20text%22&related=atwitteraccount', 
    'windowname', 
    'height=290,width=510'); 
} 

、機能は絶対に何もしませんが、コンソールは、と文句を言います:

SCRIPT438: Object doesn't support property or method 'SetReturnValue' 
index.php, line 1 character 1 

1行目の文字1は、明らかに特に何も指していません。

コンソールエラーは消えませんが、互換性ビューを有効にして正常に動作させることができます。

これを引き起こすIE9については何かありますか、もっと重要なのはこれをどのように修正するのですか?

+2

「このようなもの」ではなく実際のコードを見ると非常に便利です。テストサイトへのリンクさえあるかもしれませんか? –

+0

はjs関数の本体を追加しましたが、関数の本体はまったく問題ではないようです。 – izb

+0

あなたのページに 'Foobar.SetReturnValue()'やIDが 'Foobar'のHTML要素があるようなことがありますか? – HoLyVieR

答えて

6

私もこの非常に同じ問題がありました。私は普通のオブジェクトタグ(SWFObjectなし埋め込みフォールバックなし)でフラッシュを埋め込むよ

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250"> 
     <param name="movie" value="/files/banners/64/64_300x250.swf"/> 
     <param name="wmode" value="transparent"/> 
    </object> 

:私は、次のコードを使用していました。

ExternalInterface.call("window.open", url, target, features); 

動作しませんでした何を:私のフラッシュファイルは次のようにExternalInterfaceを介して、window.openのJS関数を呼び出す 上記のリンクは、それが動作しませんでした、「document.openを」する変更を示唆しています。 IE-8モードでページを強制的にレンダリングしようとしても機能しませんでした。たとえば、次のように仕事をした何

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

単にオブジェクトタグに「名前」と「ID」を追加することは、問題を解決しました。たとえば、

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250" name="flash_object" id="flash_object"> 
+0

この回答はInternet Explorer 11を扱う時間を節約しました。私は5分で問題を解決しました。ありがとうございました! –

関連する問題