swfobject和swffit之间的冲突

时间:2013-06-22 14:49:17

标签: swfobject

  • swfobject.js - 除其他外 - 检测浏览器是否具有Flash插件,如果没有,则显示错误消息(例如,单击此处获取Flash插件)。
  • swffit.js允许您为swfs设置最小和最大尺寸,因此它们会缩小以适应小屏幕并放大以用于大屏幕(并且,奇迹般地,它将swf X和Y居中)。

swffit下载示例首先运行swfobject.js,然后运行swffit.js。 这导致以下......

  • 在启用了Flash插件的FF和Chrome中,swffit正常工作
  • 在禁用flash插件的FF和Chrome中,没有swf,也没有错误信息,只是一个空白屏幕 - 不知何故swffit覆盖了swfobject非常有用的功能。

撤销订单,我,e。首先是swffit.js,然后是swfobject.js ......

  • 在FF和Chrome中,启用或禁用了Flash插件,我没有swf但是有错误消息。

总之,我需要swffit的可恢复性,还需要swfobject的错误消息,但看起来你不能同时使用这两个脚本。任何人的想法?

2 个答案:

答案 0 :(得分:0)

简单,只有在SWFObject嵌入成功时才调用SWFFit。使用SWFObject的callback method

执行此操作

您没有提供任何代码示例,因此我将使用SWFFit网站中的一个:

swfobject.embedSWF("example.swf", "my_flash", "550", "400", "8.0.0");
swffit.fit("my_flash");

重新配置示例以使用SWFObject的回调方法:

var flashvars = {};
var params = {};
var attributes = {};
var callbackHandler = function (e){
    if(e.success){
        swffit.fit("my_flash");
    }
};

swfobject.embedSWF("example.swf", "my_flash", "550", "400", "8.0.0", false, flashvars, params, attributes, callbackHandler);

答案 1 :(得分:0)

在进一步调查中,我发现这是一个放置问题,而不是脚本冲突。 如果您禁用了Flash插件并在此处尝试示例页面(页面底部):

基本示例(1)显示了swfobject错误消息, 但是具有最大大小的示例页面 - 居中(4)则没有。

在本地文件上播放css,结果显示消息在那里(在4中)但在屏幕左上方。如果你看(3)具有最大尺寸的示例页面 - 水平居中,你可以看到问题。

修复是 - 在swffit.fit(“my_flash”,550,289,800,436)的情况下:

<div id="my_flash" style="position:relative;">
<div style="width:550px;height:289px;text-align:center;margin:0 auto;">
<div style="margin:0 auto;width:120px;text-align:center;margin-top:100px">
error message here
</div>
</div>
</div>

将错误消息集中在最大宽度(800px)和最小宽度(550px)。