IE关闭有flash的页面,js脚本报错,直接在IE里也没有报错,在用C++开发的桌面软件中使用了IE控件,浏览时才会出现这种情况,而且如果flash是本来就写在页面里的,也没问题,如果是后创建元素加到页面就有问题,比如用jquery的get方法取到html文本再append到页面上div里就有问题。可以确定是调用flash上开放的js方法出了问题,但是不知道是哪调的。结果找到
这个页面,讲Flash ExternalInterface的问题。
关闭的问题:
引用
Internet Explorer Page Unload Bug
If you override the __flash__addCallback method (or are using Flash in an untraditional scenario like inside of a Microsoft Behavior), you can sometimes get exceptions when the page unloads on Internet Explorer. The source of this is the __flash__removeCallback method getting a null exception, which gets called as a page is unloaded. You can fix this by overriding this method and adding a better null check:
window.__flash__removeCallback =
(function() {
return function(instance, name) {
if (instance) instance[name] = null;
}; // IE 6 dangling semicolon needed
)(); // force another closure to prevent IE memory leaks
Note that you should define this function after the Flash plugin has loaded, perhaps in a onDOMContentLoaded function. Otherwise Flash will overwrite your workaround with the original, faulty function.
以前遇到过调用的问题,后来用LocalConnection解决的,现在怀疑是不是下边的问题:
引用
Using Inside a Microsoft Behavior
If you are using a Microsoft Behavior in order to extend Internet Explorer's layout engine with JavaScript?, perhaps having the Flash object be 'hidden' from the external DOM using the ViewLink trick so developers don't see it but rather your new, custom tag instead (such as an SVG root element tag), ExternalInterface won't work correctly initially and your calls won't work.
The way to fix this is to get a reference to your Flash object first ('hiding' elements inside a Microsoft Behavior is detailed here); then simply have a variation of the method defined above in the Performance section to make your Flash methods callable; the only difference is we leave the eval() function in:
function makeCallable: function(flashObj, methodName) {
// if we use the Behavior ViewLink trick to 'hide' the Flash object
// from the external page's DOM (see FlashInserter._insertFlashIE for
// the SCRIPT embedType), then Flash's ExternalInterface
// doesn't work correctly.
flashObj[methodName] =
(function(methodName) {
return function() {
eval(this.CallFunction(
'<invoke name="' + methodName + '" returntype="javascript">'
+ __flash__argumentsToXML(arguments, 0)
+ '</invoke>'));
}; // dangling semi-colon for IE 6
})(methodName); // force re-closure to prevent IE memory leaks
}
If you do this, you will most certainly want to follow the instructions in "Internet Explorer Page Unload Bug" above as well.
里边还讲到:When you add a callback using ExternalInterface, that method actually internally uses eval() in order to turn strings into objects.利用这一点在有些时候可以提升调用的性能。
分享到:
相关推荐
为了确保在IE9这样的老版本浏览器中工作,WebCamJs采用了Flash作为备选方案。由于IE9不支持getUserMedia,WebCamJs会检测到这个情况并自动切换到Flash模式。需要注意的是,用户需要安装Flash Player插件,且浏览器...
在客户端,对于不支持WebSocket的浏览器(如IE9及以下),可以使用Flash Socket或Comet技术来模拟WebSocket的实时通信。Flash Socket利用Adobe Flash Player插件来建立与服务器的持久连接,而Comet则是一种长轮询或...
Flowplayer是一款开源的Flash视频播放器,它可以很好地与JavaScript API集成,允许开发者控制视频的播放行为。当`html5media`检测到浏览器不支持HTML5视频时,它会调用Flowplayer来播放MP4格式的视频,因为MP4是...
总结,Clipboard.js是实现页面内容复制到剪贴板的一个高效工具,它简化了原本复杂的过程,让开发者能够快速地为网页添加复制功能。只需几步简单的配置,就能使用户体验得到显著提升。在实际项目中,可以根据具体需求...
EasyPlayer.js是一个流行的开源JavaScript库,专为网页端视频播放设计。这个"EasyPlayer.js-legacy.zip"压缩包包含了该库的一个旧版本,特别强调了对RTMP流媒体播放的支持。在网页上实现RTMP(Real-Time Messaging ...
然而,在执行这些步骤之后,如果游戏仍然报错,这可能意味着存在其他问题,如浏览器设置、JavaScript冲突或是游戏本身的代码问题。在这种情况下,开发者需要进一步排查,可能包括检查浏览器的兼容性设置,审查游戏...
风格管理中新增操作结果混乱的问题40、修复 IE6、IE7等浏览器提示common.js报错的Bug41、修复 前台充值卡密页面不显示验证码和同一卡密充值2次成功的Bug42、【轻量级 PR】:修复门户”模块管理“菜单高亮相关BUG43...
使用js编写一笔画解答程序,代码有详细注释,推荐chrome运行,低版本ie请注释console语句,不然会报错。游戏地址:http://www.4399.com/flash/97076.htm最后一关已通过测试。空间有分析文章。
Bugfix: [IE] 编辑器无内容,加粗,切换到代码模式,再回到可视化模式,加粗,JS报错。 Bugfix: [IE] 插入<input value=”abc"def”/>,会自动变为 <input value=”abc”def”/>。 Bugfix: ...
-Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,...
NetGather企业建站系统是结合asp ...为了更加有利于SEO的优化,我们尽量取消FLASH的运用,取而代之的就是JS效果,由于我们的HTML代码都是通过W3C认证的,所以JS效果很适合运用在我们的网站上,而不会有其他的冲突发生。
-增加示例(iframe/parent_postback_run3.aspx),如何通过简单的Javascript代码回发父页面(feedback:eroach)。 -修正一些书写错误(feedback:bmck)。 -从Region控件中删除SplitColor属性,增加CollapseMode, ...
js depending on browser 根据不同的浏览器选择不同的javascript代码 Externel CSS file 插入外部的CSS文件 Externel Javascript file 插入外部的js文件 Video embed 插入activemovie windowsMaxmizer 最大化...
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业...FIX QQ互联: 修改论坛后台设置发帖不同步到空间或不同步到微博时,发帖页有js报错的问题 FIX 修改删除用户时的bug FIX 更新附件时的删除旧附件逻辑修正
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业...FIX QQ互联: 修改论坛后台设置发帖不同步到空间或不同步到微博时,发帖页有js报错的问题 FIX 修改删除用户时的bug FIX 更新附件时的删除旧附件逻辑修正
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业...FIX QQ互联: 修改论坛后台设置发帖不同步到空间或不同步到微博时,发帖页有js报错的问题 FIX 修改删除用户时的bug FIX 更新附件时的删除旧附件逻辑修正
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业...FIX QQ互联: 修改论坛后台设置发帖不同步到空间或不同步到微博时,发帖页有js报错的问题 FIX 修改删除用户时的bug FIX 更新附件时的删除旧附件逻辑修正
在IE浏览器中,由于ActiveX控件的支持,可以直接设置iframe的src属性,而在其他浏览器中,由于安全策略的限制,不能直接通过设置src属性为"javascript:false"来阻止加载页面内容。在这些浏览器中,通过设置src属性为...
3、签到、请假查询、导出代码更替,现在可以不用开启JAVASCRIPT功能来进行页面导出了。 4、原绑定用户功能写数据库时增加对轮班字段的写入,增加轮班设定页面,现在您可以为任何一个用户设定单独的签到方式了,...
54、 修正了黄页企业页面的联系方式栏目有"传真"和"邮编",但是没有地方填加这两项信息. 55、 修正了添加栏目多的话,程序执行缓慢 56、 内容分页有问题.第一页显示不了; [page]***[/page] 插入这样的分页符,第一...