UPDATE: Die Prämisse dieser Frage erwies sich als fehlgeleitet. Das Problem tritt nicht auf, es sei denn, die Verschiebung erfolgt als Reaktion auf einen Benutzerklick. Bitte sehen Sie here.IE9 + jwplayer: __flash__addCallback Fehler, wenn Spieler in Dom vor dem Aufruf player.load() verschieben
Ich habe meinen Kopf für ein paar Tage gegen einen Fehler geschlagen und hoffe, dass jemand helfen kann.
Ich habe ein jquery-Skript, das Aufrufe an ein jwplayer-Objekt ("myplayer") unter Verwendung der jwplayer javascript api. Zum Beispiel mit einem bestimmten Video zu laden MyPlayer, nenne ich:
myplayer.load('my_url');
Dies funktioniert in feine Firefox und Internet Explorer, so lange ich nicht zuerst tue in dem DOM die Spieler an einen anderen Ort bewegen.
Allerdings verschiebt mein Skript manchmal den Player von Standort A zu Standort B und dann zurück zu Standort A, bevor myplayer.load()
aufgerufen wird. Das funktioniert gut in Firefox. Aber im Internet Explorer 9, bekomme ich einen Fehler auf dieser Linie:
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
, die innerhalb dieser Funktion ist:
function __flash__addCallback(instance, name) {
instance[name] = function() {
return eval(instance.CallFunction("<invoke name=\""+name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));
}
}
Wenn ich verfolgen, was im Internet Explorer Debugger geschieht, sehe ich, dass myplayer.load('my_url')
Anrufe this.callInternal("jwLoad",u)
in jwplayer.js
, und es ist offensichtlich, während der Ausführung this.callInternal("jwLoad",u)
, dass der Fehler auftritt.
Details:
Die html etwa wie folgt aussehen:
<div id='stage'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
<div id='holding-pen'></div>
Wenn die Spieler nicht benutzt wird, ich seinen Wrapper-div auf die Haltefeder bewegen:
var el = $('#myplayer_wrapper');
$('#holding-pen').append(el);
Nach dem Verschieben der Wrapper-Div des Players auf den Haltestift sieht das HTML jetzt wie folgt aus:
<div id='stage'></div>
<div id='holding-pen'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
Wenn ich den Player verwenden wollen, bewege ich seine Wrapper-div zurück auf die Bühne-div:
var el = $('#myplayer_wrapper');
$('#stage).append(el);
Nach der Spieler-Wrapper-div auf die Bühne-div bewegen, die HTML-Looks das gleiche, wie es ursprünglich tat
<div id='stage'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>
<div id='holding-pen'></div>
auf Seite zu laden, erstelle ich das Player-Objekt und an den Haltestift bewegen. Ich bewege es dann auf die Bühne und lade ein Video.
Wenn der Benutzer zum Beispiel auf ein Bild-Thumbnail klickt, verschiebe ich den Video-Player zum Aufnahmestift und bewege das ausgewählte Bild auf die Bühne.
Klickt der Benutzer dann auf ein Video-Thumbnail, rufe ich den Video-Player aus dem Halter und verschiebe ihn zurück auf die Bühne. Ich lade dann den Player mit dem ausgewählten Video.Dies ist, wo das "_ Flash _addCallback" Problem im Internet Explorer auftritt.
Hat jemand einen Einblick in das, was vor sich geht? Oder irgendwelche Vorschläge, wie ich das im Internet Explorer zum Laufen bringen kann?
Vielen Dank!
könnten verwandt sein: https://github.com/johndyer/mediaelement/issues/530 – greg0ire
Can Sie schaffen eine Geige, die das Problem demonstriert? Auch der Aktualisierte Link oben in der Frage ist nicht verfügbar. – Trevor
http://stackoverflow.com/questions/12823994/ie9-move-and-load-flash-player-in-response-to-user-click-load-fails ..... dieser Link funktionierte nicht, ich habe es damit verändert .... http://www.longtailvideo.com/support/forums/jw-player/bug-reports/28999/ie9-move-and-load-player-in-response-in-user -click-load-fails/ – Hitesh