gpt4 book ai didi

jquery - IE9 + jwplayer : __flash__addCallback error if move player in dom before calling player. 加载()

转载 作者:行者123 更新时间:2023-12-03 22:52:58 26 4
gpt4 key购买 nike

更新:这个问题的前提被证明是被误导的。除非移动是响应用户单击,否则不会发生此问题。请参阅here .

<小时/>

这几天我一直在为一个错误而苦苦挣扎,希望有人能提供帮助。

我有一个 jquery 脚本,它使用 jwplayer javascript api 调用 jwplayer 对象(“myplayer”)。 。例如,要加载带有特定视频的 myplayer,我调用:

myplayer.load('my_url');

只要我不首先将播放器移动到 DOM 中的其他位置,这在 Firefox 和 Internet Explorer 中都可以正常工作。

但是,我的脚本有时会在调用 myplayer.load() 之前将玩家从位置 A 移动到位置 B,然后再返回到位置 A。这在火狐浏览器中运行良好。但在 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);

将玩家的wrapper-div移动到握笔后,html现在看起来像:

<div id='stage'></div>
<div id='holding-pen'>
<div id='myplayer_wrapper'>
<object id='myplayer'>...</object>
</div>
</div>

当我想使用播放器时,我将其wrapper-div移回stage-div:

var el = $('#myplayer_wrapper');            
$('#stage).append(el);

将播放器的wrapper-div移动到stage-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 中工作有任何建议吗?

非常感谢!

最佳答案

就网络上的各种帖子而言,这似乎是 IE(6、7、8 和 9)的一个已知问题。这取决于 Flash 的组合版本和 IE版本。

IE似乎为人们期望从媒体播放器中听到的单词保留了方法:

  • 停止
  • 暂停
  • 长度

...以及 __flash__addCallback()函数似乎使用了相同的词。 playstopFlash 的重要组成部分电影并决定何时播放或停止。我无法确认 Flash 是否有更高版本已对此进行修改。

支持这一点的来源:

一个有趣的转折: http://beweb.pbworks.com/w/page/53110280/Flash%20IE8%20Javascript%20Error

有些人建议使用SWFObject为了解决诸如此类的浏览器问题,其他人研究了 Soundcloud 修复播放器的方式 - 不过 this SoundCloud article粉碎了那里的任何一丝希望。

归根结底,问题在于如何Flash预计JavaScript与自身通信,这会因 IE 中的保留方法而崩溃。您可能必须:

  • 更新您的jwplayer
  • jwplayer 的错误跟踪器上创建问题
  • 自行解决问题...

帮助我解决许多 IE 问题的方法是将 DOCTYPE 更改为 <!DOCTYPE html> 。简单而有效。请注意IE7更喜欢将 DOCTYPE 一词写成大写。每当我尝试这样做时,我就知道我已经变成了绝望的僵尸。 :P

最后但并非最不重要的一点是,请确保关闭下面最后一个单引号:

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

关于jquery - IE9 + jwplayer : __flash__addCallback error if move player in dom before calling player. 加载(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12775173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com