SWFObject
SWFObject是一个用于在HTML中方面插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。此外,它能够避免您的 HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。
SWFObject在IE下的BUG
如果Flash里绘制的对象的宽高是自适应Flash的宽高的,那么,使用SWFObject来插入Flash在IE会导致一个问题,当这个Flash被缓存后,也就是第二次访问该页面时,在该Swf文件被加载时,获取到的stage.stageWidth和stage.stageHeight为0,绘制的对象也就看不到了。
在Flash里监听resize事件,找出解决方法
如下(如果加载较慢就先等等吧~):
查看演示
用IE的话,会看到5行,有两次resize事件,这也就导致了Flash在加载的时候绘制对象错误(宽和高为0):
数字是stage.stageWidth和stage.stageHeight
info
resize
0 x 0
resize
300 x 300
如果用Firefox等浏览器,只输出两行文字,没有resize事件:
info
300 x 300
AS里的解决方案
通过监听resize事件,当stage.stageWidth和stage.stageHeight大于0时再进行初始化
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class AutoSizeExample extends Sprite
{
private var txt:TextField;
public function AutoSizeExample()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
txt = new TextField();
txt.multiline = true;
txt.wordWrap = true;
txt.text = "info\n";
addChild(txt);
if (stage.stageWidth>0 && stage.stageHeight>0){
createChild();
}else{
stage.addEventListener(Event.RESIZE,onResize);
}
}
private function onResize(e:Event):void
{
if (stage.stageWidth>0 && stage.stageHeight>0){
stage.removeEventListener(Event.RESIZE,onResize); //删除事件监听
createChild();
}
//否则继续监听事件,直到stage.stageWidth和stage.stageHeight大于0时才初始化
}
private function createChild():void
{
//进行初始化操作,创建各对象
//.......................
var w:Number = stage.stageWidth;
var h:Number = stage.stageHeight;
txt.appendText(w + " x " + h + "\n");
}
}
}
SWFObject.js里的解决方案
在swfobject.js里找到函数function createSWF(attObj, parObj, id)
里面针对winIE的处理方法是:el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
看了一下Adobe自己的AC_OETags.js,他是用document.write方法直接写入,没有这个问题;
直接写静态html(object)没有这种问题;
直接访问这个flash的地址,也没有这种问题。
至于el.outerHTML的方式为什么会导致这种问题,还没有深究,暂时还不太清楚是什么原因导致的~
待续~~~
分享到:
相关推荐
2、使用swfObject向页面中插入Flash文件。 3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的...
SWFObject 2.0 提供了比其他 Flash Player 嵌入方法更加完善和灵活的解决方案,适合各种类型的开发者使用,无论他们是 HTML 开发者、Flash 开发者还是 JavaScript 开发者,都可以从中受益。具体来说,SWFObject 2.0 ...
SWFObject.js是一款广泛使用的JavaScript库,专门设计用于在网页中插入、管理和优化Adobe Flash内容。这个插件的出现,主要是为了解决早期Flash在网页中的集成问题,尤其是在不同浏览器和平台上的兼容性问题。通过...
3. 插入SWF:如果用户已安装Flash Player,SWFObject会使用JavaScript动态替换占位符内容,插入SWF对象。 4. 备用内容:对于不支持Flash的浏览器,占位符中的HTML内容将正常显示,确保所有用户都能看到网页内容。 ...
4. **浏览器兼容性**:SWFObject.js设计的初衷就是为了处理不同浏览器之间的差异,确保Flash内容能在IE、Firefox、Chrome、Safari和Opera等主流浏览器上正确显示。它还考虑了移动设备,如iPhone和iPad,这些设备不...
需要注意的是,虽然这种方法可以解决IE8的WebSocket兼容性问题,但它依赖于Flash,而Flash已经被大多数现代浏览器逐步淘汰。因此,对于仍在使用这些旧浏览器的用户,建议尽量引导他们升级浏览器,或者提供其他如Ajax...
这个库的出现解决了早期在网页上插入Flash时存在的兼容性和可访问性问题。标题"swfobject 2.0"指的是该库的第二个主要版本,通常会包含性能提升、新功能和错误修复。 SWFObject的核心功能是通过动态替换HTML代码来...
SWFObject是一个JavaScript库,主要用于在网页中检测和嵌入Adobe Flash媒体资源,特别是SWF文件。这个模块的核心功能是通过JavaScript脚本来检测用户的浏览器是否安装了足够版本的Flash插件,以支持播放指定的Flash...
这段代码首先创建一个`<div>`作为Flash的容器,然后使用SWFObject的`embedSWF`函数插入Flash,同时检查用户的Flash版本。如果版本不足,可以执行回调函数中的回退逻辑。 总之,SWFObject是解决HTML插入Flash的兼容...
这个库解决了在不同浏览器和版本间插入Flash内容时可能出现的问题,确保了用户无论使用何种浏览器都能顺利查看Flash内容。SWFObject由格雷格·劳瑞(Greg Lawry)开发,其2.2版本是一个稳定且广泛使用的版本。 在...
**SWFObject:高效插入Flash内容的技术** SWFObject 是一个JavaScript库,广泛用于在网页中无缝、动态地插入...尽管Flash已经过时,理解SWFObject的工作原理和使用方法,对于理解Web发展历史和技术变迁仍然很有价值。
- SWFObject 提供了一种优雅的解决方案来嵌入SWF(Shockwave Flash)文件,避免了直接使用内联`<embed>`和`<object>`标签可能导致的跨浏览器兼容性问题。 - 使用SWFObject,开发者可以创建一个备用内容区域,当...
`swfobject`是一个轻量级、开源的JavaScript库,主要用来解决Flash内容在网页中的嵌入问题,包括版本检测、内容替换和自适应布局。它通过动态插入HTML代码来实现Flash内容的加载,使得内容能够根据浏览器窗口或容器...
SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash...
在这个“360室内装饰图片全景查看”的实例中,我们将探讨如何使用Flash和SWFObject.js来实现一个交互式的室内装饰展示。 首先,SWFObject.js的主要功能是检测用户浏览器是否支持Flash,如果支持,则插入SWF文件;...
标题中的问题涉及到的是Flash在某些情况下需要用户两次点击才能正常使用,以及在IE6浏览器中播放Flash时出现"Press OK to continue loading the..."的提示。这个问题通常与Flash Player的设置、浏览器兼容性或网页中...
**JavaScript与SWFObject.js详解** 在Web开发中,JavaScript是一种强大的客户端脚本语言,而SWFObject.js是一个用于在...尽管随着HTML5的发展,Flash的使用逐渐减少,但在某些场景下,它仍然是一个有价值的解决方案。
1. **对象和参数的动态修改**:在页面加载后,你可以使用SWFObject的方法来修改已插入的Flash对象的属性和参数。 2. **事件监听**:SWFObject允许你监听Flash对象的事件,如加载完成、错误等,从而实现更复杂的交互...
在这个场景下,`swfobject.js` 是一个非常实用的工具,它能够帮助开发者更方便地嵌入和控制Flash内容,而无需编写大量的JavaScript代码。本文将详细讲解如何利用`swfobject.js`来实现在点击按钮后显示Flash动画的...
**SWFObject.js** 是一个JavaScript库,专为在网页中无缝、动态地插入和管理Adobe Flash内容而设计。这个库在2.x版本中进行了重大改进,极大地简化了使用过程,使得开发者能够更加轻松地在网页中嵌入SWF(Shockwave ...