2012-10-08 5 views
6

更新日: この質問の前提は誤っていることが判明しました。この問題は、ユーザーのクリックに反応しない限り発生しません。 hereをご覧ください。IE9 + jwplayer:player.load()を呼び出す前にdomでプレーヤーを移動すると__flash__addCallbackエラーが発生する


私は数日間バグに頭を打ち、誰かが助けることを望んでいます。

私は、jwplayer javascript apiを使ってjwplayerオブジェクト( "myplayer")を呼び出すjqueryスクリプトを持っています。例えば、特定のビデオでmyplayerロードするために、私は呼ん:

myplayer.load('my_url'); 

これはあまりにも長い間、私は最初のDOM内の別の場所にプレイヤーを移動しないよう、FirefoxとInternet Explorerの両方で正常に動作します。

ただし、私のスクリプトでは、プレイヤーを場所Aから場所Bに移動してから場所Aに戻し、myplayer.load()を呼び出すことがあります。これはFirefoxで正常に動作します。しかし、インターネットエクスプローラ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); 

プレーヤーのwrapper-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でどのように動作させることができるかについての提案はありますか?

ありがとうございました!

+0

が関連するかもしれない:https://github.com/johndyer/mediaelement/issues/530 – greg0ire

+0

缶P

そして最後にではなく、少なくともを、あなたは下の最後の単一引用符を閉じることを確認してください問題を示すフィドルを作成しますか?また、質問の先頭にある更新済みのリンクは利用できません。 – Trevor

+0

http://stackoverflow.com/questions/12823994/ie9-move-and-load-flash-player-in-response-to-user-click-load-fails .....このリンクは機能しませんでした。これで変更されました.... http://www.longtailvideo.com/support/forums/jw-player/bug-reports/28999/ie9-move-and-load-player-in-response-to-user -click-load-fails/ – Hitesh

答えて

1

これは、ウェブ上のさまざまな投稿が行われる限り、IE(6,7,812 & 9)の既知の問題であるようです。これは、FlashバージョンとIEバージョンの組み合わせに依存します。

IEあり、一見、1はメディアプレーヤーから期待の言葉のための予約方法:

  • プレイ
  • 停止
  • 一時停止

...と__flash__addCallback()関数はそれらの同じ単語を使用しているようです。 playおよびstopは、Flash映画の重要な部分であり、再生または停止時に指示されます。 Flashのそれ以降のバージョンでこれを修正したかどうかは確認できません。これをサポートする

出典:

興味深いねじれ: http://beweb.pbworks.com/w/page/53110280/Flash%20IE8%20Javascript%20Error

一部の人々が使用して推奨していますSWFObjectこのようなブラウザの問題を回避するには、他の人は、サウンドクラウドがプレイヤーを修正した方法を見ている - this SoundCloud articleはそこに希望の細断を破るが。

は、JavaScriptが自身と通信することを予期しています。予約済みの方法では、IEにクラッシュします。あなたは持っていることへ:

  • 更新ご
  • がのバグトラッカー
  • が問題を自分の回避策を作るjwplayer 上の問題を作成jwplayer ...

何か多くのIEの問題を回避するのに役立ちました.DOCTYPEを<!DOCTYPE html>に変更しています。シンプルで効果的です。 IE7は、DOCTYPEという単語が大文字のと書かれていることが望ましいことに注意してください。私がこれを試すときはいつでも、私は絶望的なゾンビになったことを知っています。:

$('#stage).append(el); 
+0

私は[このウェブサイト](http://www.mediatheque-numerique.com/)とまったく同じメッセージを持っています。この問題は、最初のビデオを再生した後、左のサムネイルを使用して次のビデオに進み、次に2番目のビデオを再生するときに発生します。 – greg0ire

+0

私の答えが更新されました。 –

+0

+1、それは役に立ちます。私はこれをテストできるようにVMをインストールしようとします。 – greg0ire

関連する問題