目录
(一)有关框架
(二)文件组织与代码组织
(三)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 进行交互,如 `getVariable` 和 `setVariable` 方法。 3. **Flash 发布设置**: 为了使 Flash 能够与 JavaScript 通信,需要在 Flash 的发布设置中启用 "Allow ...
JS与Flash交互的核心在于ActionScript,Flash中的编程语言。通过ActionScript,我们可以定义Flash对象的行为,并开放接口供JavaScript调用。这种交互方式允许开发者利用Flash的强大图形处理能力,同时利用JS实现更...
3. **C#与Flash交互的必要性**:在某些场景下,例如游戏开发或网页嵌入的复杂交互,需要将Flash的内容与后端逻辑(如C#)结合,实现数据的双向通信,例如用户输入、游戏状态同步等。 4. **实现原理**:C#与Flash...
JavaScript 与 Flash 中的 Socket 交互是网页开发中一种重要的技术,主要用于实现浏览器与服务器之间的低级别通信。在 Flash 中,Socket 类提供了与服务器进行双向数据流通信的能力,而 JavaScript 则可以用来控制 ...
JavaScript、Flash和JS这三个术语在IT领域中都占据着重要的地位。它们分别代表了Web开发中的不同技术,各自有着独特的功能和应用场景。 首先,JavaScript是一种轻量级的解释型编程语言,广泛应用于网页和网络应用的...
本案例“Flash与JS交互案例”展示了如何在网页中使SWF(Flash影片)与JavaScript进行数据交换,从而实现更丰富的用户体验。 首先,让我们了解Flash中的`ExternalInterface` API。这是Adobe Flash Player提供的一种...
QWebView可以加载HTML、CSS、JavaScript以及Flash内容,因此它是实现Qt与Flash交互的基础。 1. **集成Flash Player**: 在Qt中使用Flash,需要确保系统已经安装了Flash Player插件。对于Windows平台,通常是NPAPI...
总结来说,3D Flash交互效果是通过Adobe Flash工具,结合ActionScript编程,创建出包含3D视觉和互动性的Web内容。这些内容通过FLA源文件设计,SWF文件发布,HTML页面嵌入,图像资源支持,并可能利用JavaScript进行更...
1. **Flash External Interface (AS3):** 这是Flash Player提供的一个API,允许ActionScript 3代码(Flash的编程语言)调用JavaScript函数,进而与网页中的C# Web服务或Ajax接口通信。C#服务端可以处理请求并返回...
JavaScript与ActionScript3交互问题总结 在Web开发中,JavaScript是一种广泛使用的客户端脚本语言,而ActionScript3(AS3)则是Adobe Flash平台的核心语言。两者在不同的领域中发挥着重要作用,但有时需要进行交互...
在Flex中,我们可以使用`ExternalInterface`类来与JavaScript进行交互。`ExternalInterface.addCallback`方法允许我们在JavaScript中调用Flex组件的方法,而`ExternalInterface.call`方法则用于在Flex中调用...
在网页开发中,Flash与JavaScript(JS)的交互是一个常见的需求,特别是在富互联网应用程序(RIA)的场景下。这两种技术的交互使得动态内容和用户互动得以实现,弥补了彼此的不足。本文主要探讨如何实现Flash...
同时,Flash也可以通过ACTIONSCRIPT与MFC程序进行通信,比如通过ExternalInterface接口暴露函数给JavaScript,再由JavaScript调用MFC程序暴露的ActiveX接口。 在实际应用中,可能需要处理的问题包括: 1. 初始化和...
"js.rar_actionscript_flash js_js actionscript_js flash_js交互"这个标题揭示了我们要探讨的主题——如何实现JavaScript与Flash ActionScript之间的交互。 ActionScript是Adobe Flash Professional中的主要编程...
1. 安全性:确保只允许信任的JavaScript代码与Flash交互,以防止跨站脚本攻击(XSS)。 2. 兼容性:检查目标浏览器对Flash的支持程度,因为现代浏览器可能会默认禁用或逐步淘汰Flash。 3. 性能:过多的Flash与...
本实例将详细讲解如何通过Flash与ASP进行交互,以实现更丰富的网页功能。 首先,ASP是一种服务器端脚本语言,由微软开发,用于构建动态网页。它允许开发者在HTML页面中嵌入VBScript或JScript代码,从而在服务器端...
Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flash Player或Adobe AIR环境中运行的Flex应用程序与HTML页面中的JavaScript代码进行通信。这种交互性极大地扩展了富互联网应用(RIA)的功能,使得...
**VB与Flash交互的原理:** 1. **ActiveX控件**:Flash可以嵌入到VB应用程序中作为ActiveX控件,使得VB程序能够控制Flash电影的播放、停止等操作。VB可以通过调用控件的属性和方法来实现对Flash的控制。 2. **...
"external2.swf"是编译后的Flash文件,而"js_flash.swf"可能是另一个示例,展示了JavaScript与Flash的交互。 6. **安全考虑**:尽管ExternalInterface提供了便利,但也有安全风险。恶意代码可能利用这个接口进行跨...
在现代Web开发中,Flash和JavaScript(JS)的交互是一个重要的技术点,特别是在富互联网应用程序(RIA)的场景下。这种交互能力使得开发者能够利用Flash的动画和多媒体处理能力,结合JavaScript的灵活性和浏览器兼容...