我根本不知道Flash AS,我曾经在15岁时进行过实验,但现在还没有。无论如何,我想知道是否有办法让swf文件检查它们正在加载哪个域并做出相应的反应。
答案 0 :(得分:1)
“他们从哪个域加载”你的意思是:
如果是#1,您可以从任何显示对象的root.loaderInfo.url
属性轻松获取值。
#2比较棘手。如果嵌入代码中的allowscriptaccess
设置为true
,则可以将Javascript与ExternalInterface调用一起使用。它位于document.location.host
或document.location.hostname
。
如果您无法访问Javascript(例如,如果您的SWF在Facebook帖子中),则需要进行一些设置,解决方案将取决于用户的浏览器行为。这是一种方法:
设置SWF可以ping的服务器端脚本。此脚本应查找http“referer”标头,并在ping时将其发回。然后让您的SWF向此脚本发送URLRequest。数据将是嵌入网站。
在PHP中,脚本只是echo $_SERVER["HTTP_REFERER"];
。在大多数其他语言中它也同样简单。
这是另一种方法: How do I get the domain of the page that's loading my swf when I don't have script access?
如果您只想保护自己的SWF不被嵌入其他人的页面,那就更容易了。只需检查ExternalInterface.available
即可。如果为false,则禁用SWF。如果是,请使用上述(#1)方法检查域,如果域错误则禁用SWF。