博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flash as3输出并执行javascript
阅读量:4168 次
发布时间:2019-05-26

本文共 1433 字,大约阅读时间需要 4 分钟。

 
最近一直在做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空间的免费换皮肤,免费挂件什么的,都是可以实现的。

转载地址:http://gagxi.baihongyu.com/

你可能感兴趣的文章
2018.12.9
查看>>
2018.12.29
查看>>
2018.12.31
查看>>
2019.1.2
查看>>
2019.1.4
查看>>
2019.1.9
查看>>
2019.1.12
查看>>
Java语言程序设计与数据结构》编程练习答案(第二十章)(二)
查看>>
2019.2.25
查看>>
2019.2.26
查看>>
2019.2.27
查看>>
2019.2.28
查看>>
2019.2.29
查看>>
聊聊我当年在培训学校做开发的经历
查看>>
用Docker搭建Redis主从复制的集群
查看>>
盘点这些年我出的书,以及由此得到的收获
查看>>
用Python的Pandas和Matplotlib绘制股票KDJ指标线
查看>>
面试必问:对java多线程里Synchronized的思考
查看>>
最近接了本分布式组件面试书的选题,请大家一起来提意见
查看>>
Redis整合MySQL和MyCAT分库组件(来源是我的新书)
查看>>