Flex与Javascript互相通信。
(1):在Flex中有这么一个类:ExternalInterface在这个类中它给我们:call和addCallback
Flex中As调用Js的方法是:
1、导入包 (import flashexternalExternalInterface;)
2、使用ExternalInterfacecall("Js函数名称",参数)进行调用,其返回的值就是Js函数所返回的值
Js调用As的方法是:
1、导入包 (import flashexternalExternalInterface;)
2、在initApp中使用ExternalInterfaceaddCallback("用于Js调用的函数名",As中的函数名)进行注册下
3、js中 就可以用documentgetElementById("Flas在Html中的ID")注册时设置的函数名(参数)进行调用
(2):实例演习:
[1]:flex调用javascript中的函数:
mxml:
<mx:Script>
<![CDATA[
import mxcontrolsAlert;
internal function jspHello():void {
var taStr:String = thistatext;
var s:String = ExternalInterfacecall("hello", taStr);
Alertshow(s);
}
]]>
</mx:Script>
<mx:Button x="480" y="84" label="flex call javascript" click="jspHello()"/>
<mx:TextArea id="ta" x="265" y="85" height="80" width="199"/>
javascript中的函数:
js:
<script type="text/javascript">
function hello(param) {
return "Hello: + param;
}
</script>
打印出来是:Hello:
[2]:javascript调用Flex中的函数
mxml:
<mx:Application xmlns:mx="" layout="absolute" initialize="initApp();">
<mx:Script>
<![CDATA[
import mxcontrolsTextArea;
internal function initApp():void {
ExternalInterfaceaddCallback("callBackFlex", testJavascript);
}
public function testJavascript():String {
var taStr:String = "中俄实d演习成功!";
return taStr;
}
]]>
</mx:Script>
</mx:Application>
js:
<script type="text/javascript">
function callApp() {
var str = testJavascriptCallFlexcallBackFlex();
alert("javascript调用flex成功 : + str);
}
</script>
打印出来:javascript调用flex成功:中俄实d演习成功
更多:
JS函数调用另一个函数,此种情况是一个页面同时要引入这两个JS,如:
HTML页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" "http://wwww3org/TR/xhtml1/DTD/xhtml1-transitionaldtd">
<html xmlns="http://wwww3org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="1js" ></script>
<script type="text/javascript" src="2js" ></script>
</head>
<body>
<input type="text" id="tex" name="tex" onblur="fun();" />
</body>
</html>
2js:
function onCli(){
var va=documentgetElementById("tex")value;
if(null == va || "" == va){
alert("请在文本框中输入内容!");
return false;
}
return true; //不要忘记了,不然当va的值不为空时 if(onCli())中onCli()是undefined
}
1js
function fun(){
if(onCli()){
alert("调用成功!");
}
}
自定义函数就是说自己写的函数,只有自己调用,或是自己共享给别人后别人才可以调用的。也可以理解为私有函数。<br>function a(){alert(1)}; //定义一个函数,名字是a。函数调用,就是让函数执行。<br><br>a(); //函数名字后面加一对小括号就可以执行了, 页面中将d出一个 1
12345678910function f1() { thisff = function(){};} var f = new f1();fff f1ff = function(){}; f1ff
远程本地JS方法,参考如下:
本地代码:
<script type="text/javascript">
function showdata(data) {
alert(data);
}
var url = "IP; //注意这里,参数可以随便传,method是指服务器要调用的方法名,name参数代表你要传过去 的参数,这样服务器可以对你传的参数做各种数据库 *** 作,最后通过调用你传过去的方法回调回来。
var script = documentcreateElement('script');
scriptsetAttribute('src', url);
documentgetElementsByTagName('head')[0]appendChild(script);
</script>
服务器(WebForm1aspx)代码;
html:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1aspxcs" Inherits="RTERPWebWebForm1" %>
只留这一句,其他全部删除;
后台cs:
protected void Page_Load(object sender, EventArgs e)
{
string name = Request["name"];//接收传过来的参数;
string method = Request["method"];//接收传过来的js方法名称;
/
这中间可以是你随便的各种 *** 作,什么读写数据库啊等等,反正最后要给传过来的js方法当参数传过去;
/
ResponseWrite(method + "('远程服务器返回的数据" + name + "');");//调用那个JS方法;
}
<span id="demo"></span>
<script>
var text="dffasdfasdfadsfadsfdaf;klsjdf;lkajsdf'alskdjf'asdlf"; //预定文字
var delay=200; //文字出现的时间间隔
var i=0 ; //初始化变量 i
function scrollit(){
//设置 id 为 demo 的对象内的文字为从变量 text 的 0 开始到 i 间的文字加"_"
documentgetElementById('demo')innerHTML=textslice(0,i++)+"_";
if(i>textlength){ //当 i 大于 text 的文本长度时
i=0; //重设 i 为 0,使文字重新从第一个文字出现
//延时执行scrollit()函数,delay10是为了让显示完整文字的时间长一点
setTimeout("scrollit()",delay10);
}
//否则在delay毫秒后再次执行scrollit()函数
else setTimeout("scrollit()",delay);
}
scrollit();//调用scrollit()函数
</script>
首先把这两个函数都定义数来。
定义被调用函数(这类函数一般都是一个公用函数,如果不是公用可以和调用函数写在一起)。
// 被调用的公共函数 act为需要的参数,自己定义就可function publicMethod(act1,atc2){
// 实现逻辑
}
3定义调用函数
// 调用的函数 act为需要的参数,自己定义就可
function callMethod(act1,atc2){
// 如果有返回值,可以定义一个变量进行赋值
var ret = publicMethod(act1,atc2);
// 下面逻辑处理
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)