更新: この質問の前提は見当違いであることが判明しました。移動がユーザーのクリックに応答しない限り、問題は発生しません。こちらをご覧ください。
私は数日間バグに頭を悩ませてきましたが、誰かが助けてくれることを望んでいます.
jwplayer javascript apiを使用して jwplayer オブジェクト (「myplayer」) を呼び出す jquery スクリプトがあります。たとえば、特定のビデオで myplayer をロードするには、次のように呼び出します。
myplayer.load('my_url');
これは、まずプレーヤーを DOM の別の場所に移動しない限り、firefox と Internet Explorer の両方で正常に機能します。
ただし、私のスクリプトでは、プレーヤーを場所 A から場所 B に移動してから場所 A に戻してから、 を呼び出すことがあり myplayer.load()
ます。これは、Firefox では問題なく動作します。しかし、Internet Explorer 9 では、次の行でエラーが発生します。
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
この関数の中にあります:
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
}
}
Internet Explorer デバッガーで何が起こっているかを追跡すると、 がmyplayer.load('my_url')
呼び出さthis.callInternal("jwLoad",u)
れていることがわかります。jwplayer.js
実行中this.callInternal("jwLoad",u)
にエラーが発生したようです。
詳細:
html は次のようになります。
<div id='stage'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
<div id='holding-pen'></div>
プレーヤーが使用されていないときは、そのラッパー div を保持ペンに移動します。
var el = $('#myplayer_wrapper');
$('#holding-pen').append(el);
プレーヤーのラッパー div を保持ペンに移動すると、html は次のようになります。
<div id='stage'></div>
<div id='holding-pen'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
プレーヤーを使用する場合は、そのラッパー div をステージ div に戻します。
var el = $('#myplayer_wrapper');
$('#stage).append(el);
プレーヤーのラッパー div をステージ div に移動した後、html は元と同じように見えます。
<div id='stage'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
<div id='holding-pen'></div>
ページの読み込み時に、プレイヤー オブジェクトを作成し、保持ペンに移動します。次に、それをステージに移動し、ビデオを読み込みます。
たとえば、ユーザーが画像のサムネイルをクリックすると、ビデオ プレーヤーが保持ペンに移動し、選択した画像がステージに移動します。
ユーザーが動画のサムネイルをクリックすると、保持しているペンから動画プレーヤーを取り出して、ステージに戻します。次に、選択したビデオをプレーヤーにロードします。これは、Internet Explorer で「_ flash _addCallback」問題が発生する場所です。
何が起こっているのかについての洞察を持っている人はいますか? または、これを Internet Explorer で動作させる方法について何か提案はありますか?
どうもありがとうございました!