目录
(一)有关框架
(二)文件组织与代码组织
(三)JS与FLASH交互
(四)ajax局部刷新与RPC
(五)获取设置元素样式与监听元素事件
(六)页面元素的创建调整与关联
(七)浏览器兼容性问题
(八)WEB软件的前端架构实践
文章中的代码只为表达文章意义,非真正能执行的代码。
JS与FLASH交互
与flash交互遇到的问题
一、由于嵌入标记以及浏览器等原因,导致JS无法调用FLASH中的方法
使用
swfobject来嵌入你的FLASH
它的优点有:
- 简单简洁,再也不那COPY那一大段的标记了
- 支持指定FLASH版本,如果版本不够可自动升级
二、FLASH调用JS的时候,JS对象还不存在
由于大部分脚本是放到页面最底部的(这样做的原因是让浏览器先渲染出界面,因为载入脚本时会停止渲染页面),所以如果在脚本导入之前就嵌入了FLASH,并且FLASH尝试调用JS方法,此时可能JS对象所在的脚本还未执行。我的做法是把嵌入的FLASH的代码放到所有脚本执行之后。
三、JS调用FLASH的时候,FLASH还未初始化完成
FLASH嵌入到页面中后,根据文件大小 ,下载要一定时间,下载完成后,FLASH还要执行初始化操作,其中就包括初始化暴露给JS调用的方法,在这一切没有做好之前,如果JS尝试与FLASH交互,必然会失败。在做好解决上面的第二个问题之后,解决这个问题的办法就是让FLASH通知JS,说自己已经处于READY状态了。
$flashReadyListeners = {};
//把FLASH初始化完后要执行的JS写在传递给flashReady的参数fn里面。
function flashReady(flashName, fn){
var listeners = $flashReadyListeners[flashName]
if(!listeners)listeners=$flashReadyListeners[flashName]=[];
listeners.push(fn);
}
//flash初始化完成后调用此方法
function flashInit(flashName){
var listeners = $flashReadyListeners[flashName];
if(listeners){
jQuery.each(listeners, function(fn){
typeof fn == "function" && fn();
})
}
}
//example
//在chat.swf载入完成后,调用它jsCall方法
flashReady("chat", function(){
getFlash("chat").jsCall("speak","hello");
})
四、flash与js相互调用的接口
flash与js要相互调用,要约定好接口方法名,参数个数及意义,一有变化,要改相应代码,FLASH还要重新编译,很是麻烦。目前的做法是:
先根据需求,讨论好后把接口规范放到WIKI上面。然后通过以下方法路由选择后再调用具体方法。
FLASH代码中的定义
//我不会写FLASH,以下代码不能运行
//js调用FLASH
function jsCall(fnName, args, callback){}
//flash调用JS
function callJs(fnName, args, callback){}
JS代码中的定义
//flash调用JS
function flashCall(fnName, args, callback){
switch(name){
case name == "updateStatus":
app.$currentUser.updateStatus(args, callback);
break;
default:
thrown fnName + "未定义";
}
}
//JS调用FLASH
function callFlash(flashName, fnName, args, callback){
getFlash(flashName).jsCall(fnName, args, callback);
}
参数说明:
@param fnName {String} 要调用的方法名
@param args {Object} 传递给具体方法的参数HASH,key为字符串
//这样做,你可以给参数定名称,与WIKI对应。然后要增加参数与方便
@param callback {Function} 方法调用后要执行的 回调
目前JS与FLASH的调用,还不算太多,十个左右吧,所以路由实际上用的是IF ELSE
。
当然这样做不是很好,具体怎样做,欢迎大家讨论。
分享到:
相关推荐
javascript与flash之间的交互(例子) javascript与flash之间的交互(例子)
flash已经是网页编程中不可或缺的元素,该文章谈到了flash与javascript互调,
与asp js交互数据实现 ------------------------------ import fl.controls.Button; import fl.core.UIComponent; var TF : TextFormat = new TextFormat(); TF.size = 16; TF.color = 0x0000ff; key.setStyle(...
下面是一些在Flash和使用Javascript的HTML文件直接通信的示例,每个示例都有简略的步骤 本文讨论了3种基本的Flash/Javascript通信方式: Javascript 到 Flash的通信—-使用Flash播放器的javascript方法 Flash 到 ...
本例通过flash 8的ExternalInterface实现了javascript与flash之间的相互调用
漂亮全屏js交互摄影图片企业模板_漂亮 全屏 交互 仿flash js交互 jquery 摄影 图片 画廊 左栏 左侧 二栏 自漂亮全屏js交互摄影图片企业模板_漂亮 全屏 交互 仿flash js交互 jquery 摄影 图片 画廊 左栏 左侧 二栏 自
全屏js交互大图模特摄影公司响应式模板_全屏 js交互 仿flash 模特 摄影 图片 响应式 手机 responsive ht全屏js交互大图模特摄影公司响应式模板_全屏 js交互 仿flash 模特 摄影 图片 响应式 手机 responsive ht
有关FLASH利用AS3.0与网页里javascript产生交互达到信息传递的方法。案例中用了最简单的例子,简单易懂。大家多多交流,共同进步。
黑色仿flash交互动画jquery房产家居企业模板_黑色 交互 仿flash 动画 jquery 房产 家居 企业 简单.zi黑色仿flash交互动画jquery房产家居企业模板_黑色 交互 仿flash 动画 jquery 房产 家居 企业 简单.zi
利用JAVASCRIPT即你想那个GZIP压缩与解压缩 最近流行的网络游戏(FLASH)数据传输都是用GZIP进行压缩与解压缩的,在客户端FLASH对与服务器交互的数据进行解压缩,
在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。 Flash背后的ActionScript曾经流行过一阵子,不过随着移动应用的兴起,没有人用Flash开发手机App,所以它目前已经边 缘化了。相反,随着HTML5...
大气精品时尚仿flash全屏摄影企业模板_全屏 大气 精品 时尚 服装 时装 摄影 漂亮 js 交互 仿flash 企业 动画 大气精品时尚仿flash全屏摄影企业模板_全屏 大气 精品 时尚 服装 时装 摄影 漂亮 js 交互 仿flash 企业 ...
将 ActionScript 方法注册为可从容器调用。成功调用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。
个性简单jquery交互个人web简历模板_灰色 简单 jquery 仿flash 交互 个人 简历 web简历 bootstr个性简单jquery交互个人web简历模板_灰色 简单 jquery 仿flash 交互 个人 简历 web简历 bootstr
全屏大图背景JS幻灯仿FLASH网站模板_全屏 黑色 背景 幻灯 交互 仿flash jquery 漂亮 精品 大图.zip全屏大图背景JS幻灯仿FLASH网站模板_全屏 黑色 背景 幻灯 交互 仿flash jquery 漂亮 精品 大图.zip
jquery flash交互式媒体播放器.zip
棕色仿flash动画jquery交互个人网站模板_棕色 动画 交互 jquery 仿flash 简历 web简历 窄 个人 网站棕色仿flash动画jquery交互个人网站模板_棕色 动画 交互 jquery 仿flash 简历 web简历 窄 个人 网站
与Web浏览器定义的文档对象模型(DOM)一起使用时,JavaScript可以创建动态HTML(DHTML)内容,允许用户与客户端的Web应用程序交互。 JavaScript语法以流行的程序设计语言C、C 和Java为基础,因此,经验丰富的程序设计...
2)本插件是基于同一台电脑上的FLASH之间能进行LocalConnection以及FLASH与JS能相互调用的原理而设计,将客户端不同域页面间Javascript相互调用转化为了FLASH之间的"本地命令发送". 3)本插件在不同域页面间Javascript...