[兼容各浏览器] JavaScript 动态修改 swf 地址方法

方法一

适合浏览器:FireFox 和 Chrome
参考文献:http://noobflash.com/swf-css-display-change-causes-reload-in-firefox-and-chrome/ (英文)

/*

代码用 YUI ~ 也可以用原生 JS 或者其它框架同理去做 :-);

none-display 是定义的一个 class ,其属性是 display:none;

因为 Chrome 在从 display:none 切换到不是 display:none 的时候会根据当前 src 值重加载影片;

而 FireFox 总是在 src 一改变就加载(详见参考文献)

*/

Y.one(“#embed标签的id”).addClass(“none-display”);

tmpObj.setAttribute(“src”, movieSwfURL); // 用 YUI3 Node 的 setAttribute 改变 src

Y.one(“#embed标签的id”).removeClass(“none-display”);

.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }

方法二

适合浏览器:IE6 和 IE7
参考文献:http://bufanliu.iteye.com/blog/200590 (中文)

/*

IE6 和 IE7 读取的是 object 标签内的内容,关于 object 和 embed 标签可以查阅参考文献;

swf 文件的地址通过 param 标签 来确定;

可以尝试直接修改 标签的值,但是在 IE 的 Developer Tool 里面可以看到:值虽然修改了,

影片却没有重新加载。并且对 chrome 有效的 display:none 大法无效。

解决方案是取 object 对象,修改其 movie 属性的值;

然而此法对于 Ie8 及以上的浏览器无效 :-(

*/

Y.one(“#embed标签的id”).setAttribute(“movie”,movieSwfURL);

.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }

方法三

适合浏览器:全面适合各种浏览器
参考文献:http://aiyooyoo.com/index.php/archives/180/ (中文)

/*

原生代码较长,其原理就是直接修改整个插入 flash 功能的代码,

一般通过在 flash 外面套一个 div 并修改其 innerHTML 来实现。

原生实现可以仿照参考文献。

*/

var data = {

"movieURL":"swf 的 URL 地址"

};

Y.one(“#div的Id”).setContent(Y.Mustache.to_html(Mustache模板字符串, data));

.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }

方法四

适合浏览器:FireFox Chrome IE6 IE7 IE8 IE9

/*

本人在用这个方法的时候,总是碰到各种各样的兼容性问题,和 flash 的 HTML 标签的写法有关。

changeVideo 是 swf 文件里面实现的一个可以用 js 调用的方法,其作用是改变播放的影片。

这是一个脆弱的方法,其原因在于,flash object 标签写法的不同,

可以导致在某些浏览器中能够调用 flash object 方法,某些浏览器中提示方法无效。

*/

movieObj.changeVideo(movieURL, 其它参数……);

.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }



<param name=&q
uot;quality” value=”high”>







.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }

相关文章

为了视频切换无叠音,请阅读《【笔记】 消除 flash 视频播放器的叠音》。