Flash与页面交互的钥匙之 AllowScriptAccess

Flash与页面交互的钥匙之 AllowScriptAccess原文:http://cloud21.iteye.com/blog/729676今天为一个flash的问题搞了半天,flash在页面中点不开js的提示框,如果单是这一个问题,那我立刻就能确定问题所在,一

大家好,又见面了,我是你们的朋友全栈君。

原文:http://cloud21.iteye.com/blog/729676

今天为一个flash的问题搞了半天,flash在页面中点不开js的提示框,如果单是这一个问题,那我立刻就能确定问题所在,一定是allowScriptAccess这个属性有问题,可是同时还存在另一个问题,我的flash中的链接换成_self或_parent就没反应了,我随即将解决问题的焦点放在了flash上,找了半天,也没发现什么异常,最后抱着先解决js交互的问题的想法改了allowScriptAccess,谁知链接的问题也被修复了,我开始思考,为什么呢?于是找到这个属性的手册,原来问题出在Target属性上。 

先说这个属性的一般特性。 

比如:<param name=”allowScriptAccess”value=”sameDomain”/> 

value参数说明: 
 always 允许随时执行脚本操作。 
 never 禁止所有脚本执行操作。 
 samedomain 只有在 Flash 应用程式来自和 HTML 页相同的域时才允许执行脚本操作。 
 所有 HTML 发布模板使用的默认值均为 samedomain。 

  使用 allowscriptaccess 使 Flash 应用程式可和其所在的 HTML 页通信。此参数是必需的,因为 fscommand() 、getURL()、ExternalInterface.call(),甚至navigateToURL()都可能导致 JavaScript 使用 HTML 页的权限,而该权限可能和 Flash 应用程式的权限不同。这和跨域安全性有着重要关系。 

  也就是说如果swf在A.rangerch.com下,不过页面在B.rangerch.com下,想用getURL或fscommand调用页面中的js是不能的,除非你将value设置为always。特别是navigateToURL和getURL,当它们的第二个参数不是_blank时(_self,_parent,_top),也被定义了与js交互一样的安全限制,即也需要设置allowScriptAccess! 

这下搞清楚了,想一下,其实Adobe的工程师们这么做也是有道理的。 

下面是Flash文档中的解释,已经很详细了: 

ActionScript 3.0 编程 
        
  
Flash Player 安全性 > 控制对主机网页中脚本的访问  
  

控制对主机网页中脚本的访问 
通过使用以下 ActionScript 3.0 API 可实现外出脚本访问: 

•flash.system.fscommand() 函数 
•flash.net.navigateToURL() 函数(当指定 navigateToURL(“javascript: alert(‘Hello from Flash Player.’)” 等脚本访问语句时) 
•flash.net.navigateToURL() 函数(当 window 参数设置为”_top”、”_self”或”_parent”时) 
•ExternalInterface.call() 方法 
对于本地运行的 SWF 文件,仅当 SWF 文件和包含该文件的网页(如果存在)位于受信任的本地安全沙箱中时,才能成功调用这些方法。如果内容位于只能与远程内容交互的沙箱或只能与本地文件系统内容交互的沙箱中,则对这些方法的调用将失败。 

HTML 代码中用于加载文件的 AllowScriptAccess 参数控制能否从 SWF 文件内执行外出脚本访问。 

在 HTML 代码中为承载 SWF 文件的网页设置此参数。可以在 PARAM 或 EMBED 标签中进行设置。 

AllowScriptAccess 参数可以有 “always”、”sameDomain” 和 “never” 这三个可能值中的一个: 

•当 AllowScriptAccess 为”sameDomain”时,仅当 SWF 文件和网页位于同一域中时才允许执行外出脚本访问。这是 AVM2 内容的默认值。 
•当 AllowScriptAccess 为”never”时,外出脚本访问将始终失败。 
•当 AllowScriptAccess 为”always”时,外出脚本访问将始终成功。 
如果未在 HTML 页面中为 SWF 文件指定 AllowScriptAccess 参数,则默认为 AVM2 内容的”sameDomain”。 

下面是一个在 HTML 页面中设置 AllowScriptAccess 标签的示例: 

Java代码  
收藏代码

  1. <object id=‘MyMovie.swf’ classid=‘clsid:D27CDB6E-AE6D-11cf-96B8-444553540000’ codebase=‘http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0’ height=‘100%’ width=‘100%’>  
  2. <param name=‘AllowScriptAccess’ value=‘never’/>  
  3. <param name=‘src’ value=MyMovie.swf’/>  
  4. <embed name=‘MyMovie.swf’ pluginspage=‘http://www.adobe.com/go/getflashplayer’ src=‘MyMovie.swf’ height=‘100%’ width=‘100%’ AllowScriptAccess=‘never’/>  
  5. </object>   

AllowScriptAccess 参数可以防止从一个域中承载的 SWF 文件访问来自另一个域的 HTML 页面中的脚本。对从另一个域承载的所有 SWF 文件使用 AllowScriptAccess=”never” 可以确保位于 HTML 页面中的脚本的安全性。 

有关详细信息,请参阅《ActionScript 3.0 语言和组件参考》 中的以下条目: 

•flash.system.fscommand() 函数 
•flash.net.navigateToURL() 函数 
•ExternalInterface 类的 call() 方法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155137.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单实现微信扫码支付开发

    @文末附有开发案例代码的地址微信支付开发官方地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 1. appid, 微信公众账号或开放平台APP的唯一标识 2. mch_id, 微信支付系统中的商户收款账号 3. partner, 财付通平台的商户账号 4. partnerkey, 财…

    2021年11月30日
    39
  • PDF文件预览_pdf文档下载网站

    PDF文件预览_pdf文档下载网站背景:项目中实现pdf文件的预览以及下载环境:jdk1.8、SpringBoot2.0、MavenPDF.js下载地址:http://mozilla.github.io/pdf.js/getti

    2022年8月6日
    7
  • 国外免备案服务器网站,免备案海外服务器对SEO的影响[通俗易懂]

    原标题:免备案海外服务器对SEO的影响在前期SEO工作中,我们经常选择一些国内比较特殊的路线,可以有效避免网站备案带来的麻烦。随着近年来日益严格的国际比较方案备案审查,在国内上线的网站必须申请备案。所以有些SEO人员会有这样一个疑问,使用香港主机或者海外服务器,不会文件网站对SEO有影响吗?小编建议您在国内运营的网站都备案,以免影响以后网站的运营。租用服务器哪个好?小编带你了解梦飞云。1.海外服…

    2022年4月8日
    119
  • nvidia卸载程序失败_英伟达显卡驱动安装失败怎么办?[通俗易懂]

    nvidia卸载程序失败_英伟达显卡驱动安装失败怎么办?[通俗易懂]一般用户重新安装系统或者更新显卡驱动后,安装光盘中的英伟达显卡驱动,安装后却提示“NVIDIA安装程序失败”,遇到这样的问题,很多用户会选择重启后重新安装一次,不过都不能解决安装电脑显卡驱动安装失败的故障,下面华海电脑网小编给大家几个解决方法:安装显卡驱动安装失败注意:一定要你显卡型号对应驱动,否则不可能成功的,推荐使用“驱动精灵”或者“驱动人生”自动搜索对应显卡驱动下载并且安装。英伟达显卡驱动安…

    2022年5月16日
    74
  • Python源码剖析_python编程300例pdf

    Python源码剖析_python编程300例pdf关注“Java后端技术全栈”回复“面试”获取全套面试资料Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python最初被设…

    2022年8月23日
    7
  • java jersey使用总结_jersey Java Jersey配置「建议收藏」

    java jersey使用总结_jersey Java Jersey配置「建议收藏」示例此示例说明了如何配置Jersey,以便您可以开始将其用作RESTfulAPI的JAX-RS实现框架。假设您已经安装了ApacheMaven,请按照以下步骤设置Jersey:创建MavenWeb项目结构,在终端(Windows)中执行以下命令mvnarchetype:generate-DgroupId=com.stackoverflow.rest-DartifactId=jerse…

    2022年7月12日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号