转自:http://hi.baidu.com/bigbig_88/blog/item/c958528dddaab8faf11f36ff.html
一.flash到javascript
1. getURL方法
getURL("javascript:s2j_call('参数')","_self");
复制代码
这个是很古老的了,不过发布成player7或之前的版本都可以支持到它,所以几年来一直用它.
不过只能传递字符串参数,只能做些简单的调用.最致命的是,执行这条语句会导致页面正在加载的异步js进程被阻断,所以如果一个页面渲染了一般flash就发出这个事件,那就等着空白页面吧.
所以现在不要再用这条方法了!
2.ExternalInterface接口
ExternalInterface.call("s2j_call",参数);
复制代码
发布成8或更高的版本的flash支持该接口,优点是参数可以为json,object,数组,布尔,字符串等,所以和js交互就很方便了.
而且不会阻碍页面异步js进程.目前都使用该方法.
注意:
当flash和页面跨域时候,页面需要允许flash操控其函数,所以在插入flash时,需要加入
<param name="allowScriptAccess" value="always" />
复制代码
二.javascript到flash
这个才是本文的重点,简单来说,就是在flash里绑定js事件,不过要在浏览器和各种页面加载情况下实现这个功能
有以下几点注意事项,缺一不可.
flash里:
ExternalInterface.addCallback("j2s_callback",this, j2s_callback);
function j2s_callback(_p)
{
trace(_p);
}
js里,首先要获得对flash元素的引用,考虑到不同浏览器,需要对object和embed标签都赋予不同的id,然后判断浏览器类型,通过getElementById来获取ref.然后通过ref.j2s_callback来调用flash内方法.
所以,大致的代码会是这样:
var swf_id = "swf_" + (isIE ? "ie" : "other");
var ref = document.getElementById(swf_id);
而html里 object 标签和 embed 标签对应的 id 属性分别是 "swf_ie" 和 "swf_other";
注意:
1.当flash和页面跨域时候,flash里需要加入允许js添加callback的安全许可:
System.security.allowDomain("域");
2.由于各个浏览器的缓存机制和页面加载机制都不同,所以不要指望flash在addCallback执行的时候确实相应的js程序已经定义了,如果没有的话,addCallback是不会成功的.
所以,可以设个轮循来检测页面是否初始完成:
this.onEnterFrame = function()
{
if (ExternalInterface.call("s2j_check"))
{
ExternalInterface.addCallback("j2s_callback",this, j2s_callback);
this.onEnterFrame = null;
}
};
现在你以为这段代码完美了吧?其实有很大问题,当s2j_check函数未定义的时候,网页是会报错的.所以还需要将上述代码中轮循js的那一行改为:
if (ExternalInterface.call("function(){try{if(s2j_check()=='ok'){return true;}}catch(ex){}}"))
这样用一个匿名函数去try就万无一失了,什么设个间隔,等几百毫秒再去加载之类的方法就千万别再用了.
页面:
function s2j_check()
{
return "ok";
};
function j2s_callback()
{
//to do 调用flash;
};
这样,就可以保证addCallback之前函数已经被初始化完毕.
还有什么遗漏的欢迎补充.
分享到:
相关推荐
2. **Flash与JavaScript交互的必要性**: - **跨平台兼容**:虽然Flash在过去的几年中在移动设备上支持度下降,但JavaScript在所有现代浏览器中都得到了很好的支持。通过二者交互,可以确保在不支持Flash的设备上也...
1. 安全性:确保只允许信任的JavaScript代码与Flash交互,以防止跨站脚本攻击(XSS)。 2. 兼容性:检查目标浏览器对Flash的支持程度,因为现代浏览器可能会默认禁用或逐步淘汰Flash。 3. 性能:过多的Flash与...
Flash对象可以通过ActionScript 3(AS3)与JavaScript交互。在AS3中,我们可以使用`ExternalInterface`类来调用JavaScript函数。例如,当Flash中的某个事件触发时,我们可以使用`ExternalInterface.call()`方法将...
在Flex应用中,我们可以通过JavaScript与Flash内容交互,从而实现Flex和Flash之间的数据传递。 2. **事件监听**: 为了实现交互,我们需要在Flex和Flash之间设置事件监听器。例如,在Flash端,可以发布一个自定义...
"js.rar_actionscript_flash js_js actionscript_js flash_js交互"这个标题揭示了我们要探讨的主题——如何实现JavaScript与Flash ActionScript之间的交互。 ActionScript是Adobe Flash Professional中的主要编程...
8. **注意事项**:“使用绝对路径”的提示意味着在进行交互时,可能涉及到文件操作或资源定位,使用绝对路径可以确保程序在任何目录下都能正确找到所需的文件。 在“flashtest”这个示例文件中,很可能是包含了一个...
以下是一些关键步骤和注意事项: 1. **启用External Interface**:在ActionScript代码中,首先需要确保External Interface已被启用。这可以通过在Flash的AS3代码中添加`flash.external.ExternalInterface....
在“JavaScript写的flash书角广告代码”中,JavaScript主要负责控制Flash广告的显示、隐藏、动画效果以及与其他网页元素的交互。这通常通过以下几种方式实现: 1. **嵌入Flash对象**:JavaScript可以通过`<object>`...
JavaScript 与 Flash 3D BANNER 展示代码是一个典型的结合了前端技术与动画效果的项目,主要用于创建吸引用户注意力的交互式网页元素。在这个项目中,JavaScript 和 Flash 被用于实现3D动态横幅广告,这在早期网页...
3. **注意事项**: - `ExternalInterface`只在Flash Player 8及以上版本支持。 - 必须确保Flash内容的Allow Script Access设置为"always"或与当前域匹配,否则交互会失败。 - JavaScript和AS3.0之间的数据类型...
#### 注意事项 - **兼容性问题**:不同的浏览器可能对这些调用方式的支持程度不同。特别是对于较老版本的浏览器,可能需要进行额外的兼容性处理。 - **安全性考虑**:直接调用JavaScript可能会引发安全风险,例如跨...
JavaScript与Flash的交互通常借助于一些辅助的JavaScript库,如SwfObject。 ### 知识点一:SwfObject的配置与使用 SwfObject是一个流行的JavaScript库,它简化了Flash内容的嵌入过程,并能够优雅地处理没有安装...
此外,为了使代码更易于理解和维护,项目可能还包含了readme.md文件,这是一个Markdown格式的文档,通常包含项目的介绍、使用方法、安装步骤、注意事项等内容。开发者可以通过阅读此文件来了解项目的基本信息和运行...
#### 四、注意事项 - **浏览器兼容性**:由于不同浏览器对Flash的支持程度不同,确保目标浏览器支持所需的Flash版本非常重要。例如,上述代码中`codebase`属性指定了Flash播放器的下载地址,确保用户能在未安装或...
`allowScriptAccess`参数必须设为`always`,以允许JavaScript与Flash交互。 2. **在Flash中公开方法**: 在AS3代码中,我们需要创建一个公开的方法。例如,我们可以创建一个播放音频的方法: ```as3 import ...
文件"readme.md"可能包含了关于Demo的详细说明,包括如何运行、代码结构、注意事项等。而"zol首页flash3屏焦点图代码Demo"很可能是实际的源代码文件,可能包含HTML、CSS和JavaScript三个部分。HTML负责布局和内容,...
4. **注意事项和最佳实践**: - 确保浏览器支持Flash Player且已安装。 - 测试在不同浏览器和操作系统上的兼容性,因为某些功能可能在特定环境下表现不一致。 - 为安全起见,不要在未经用户许可的情况下执行敏感...
在"javascript tab标签 韩国购物网Flash标签切换效"这个项目中,readme.md文件可能包含了实现该效果的步骤、代码示例、注意事项等内容。而"javascript tab标签 韩国购物网Flash标签切换效.js"可能是实现这个功能的...
该压缩包文件包含的是一款全屏大气的摄影企业网站模板,设计风格精致且时尚,具有仿Flash效果,但实际基于JavaScript交互技术实现。这款模板特别适用于服装和时装行业的摄影展示,能够以美观的方式呈现作品,增强...
1. **跨域策略文件**:由于Flash Player的安全限制,Flex应用在与JavaScript交互前需要加载一个跨域策略文件,允许它与不同源的JavaScript进行通信。这个文件通常命名为crossdomain.xml,放置在服务器的根目录下。 ...