flash as3输出并执行javascript

 
最近一直在做flash和javascript脚本通信的工作,而公司有些项目是widget项目,主要载体是用的flash呈现的。有天,leader就问我,是否有办法让flash来输出javascript脚本。
我当时只是想到利用navigateToURL(new URLRequest("javascript:"));类似这样的方法来输出一段javascript脚本。
这种方法常常被用来作为点击flash中的一个按钮达到关闭浏览器的目的。
如:navigateToURL(new URLRequest("javascript:window.close()"),"_self");
或者刷新页面:
navigateToURL(new URLRequest("javascript:location.reload();"),"_self")

但是如果我想创建某些页面脚本,并且运行,靠这个方法就很难实现了。



ExternalInterface.call()是作为as3来调用页面javascript的方法,其中有两个参数,第一个是javascript的函数名称,而后面的是方法的参数。
今天在做项目的时候,突然想到了javascript中的eval方法。
这样我就可以书写类似这样的脚本了。
ExternalInterface.call("eval","var divHelloWorld=document.createElement('div');divHelloWorld.style.position='absolute';divHelloWorld.style.zIndex=999;divHelloWorld.top='0px';divHelloWorld.style.left='0px';divHelloWorld.style.height=document.documentElement.clientHeight;divHelloWorld.style.width=document.documentElement.clientWidth;divHelloWorld.style.backgroundColor='#ff6';divHelloWorld.style.align='center';divHelloWorld.style.lineHeight=document.documentElement.clientHeight;divHelloWorld.style.verticalAlign='middle';document.body.appendChild(divHelloWorld);");
这样相对复杂的javascript脚本了。



当然这样也就多了一种调试方法 ExternalInterface.call("window.alert","需要调试的字符串");

当然,这个需要flash的承载容器中allowScriptAccess至少得开放了 sameDomain。能允许flash和页面脚本通信。

这样就可以把需要的javascript脚本全部封装在swf文件中了。
当然也可以干些别的事情,比如QQ空间是屏蔽了css中的expression的,QQ空间以前也对allowScriptAccess加了sameDomain限制,但是现在QQ空间连这个限制也没有了。所以要做QQ空间的免费换皮肤,免费挂件什么的,都是可以实现的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值