我有一个使用Actionscript 3的flash电影,其中包含一些打开新页面链接的按钮。这是我重定向到新页面的代码:
myButton.addEventListener(MouseEvent.CLICK, function(e:MounseEvent) {
var request:URLRequest = new URLRequest('http://www.example.com/page2.html');
navigateToURL(request, "_top");
});
它在我的生产服务器上运行时使用包含域名的完整网址,但是当我将其更改为:
var request:URLRequest = new URLRequest('page2.html');
它不再适用于生产。我在这里错过了什么?我不想将整个网址编码到电影中。
答案 0 :(得分:11)
URLRequests是相对于包含它们的HTML文件(与SWF的位置无关),因此您需要考虑这一点。 您可以设置EMBED / OBJECT的可选属性来更改此行为,请参见此处:
基础 - 。或[基本目录]或[URL]。指定基目录或 用于解析所有相对路径的URL Flash Player影片中的语句。 这个属性对你有帮助 Flash Player电影保存在 与您的其他目录不同 文件。
http://kb2.adobe.com/cps/127/tn_12701.html
编辑: 此外,尽量避免使用相对文件的绝对URL,因为您可能会收到沙盒错误,例如,加载没有“www。”的网页......
答案 1 :(得分:1)
尝试使用/page2.html
答案 2 :(得分:1)
/page2.html应该像克里斯建议的那样正常工作。
此外,我经常为具有大量URL的大型项目做的一件事就是创建一组全局链接函数,我可以在不同的启动环境之间切换。
在我工作的地方,我们在生产,登台和各种测试环境之间至少有4到5个不同的环境,有时URL必须进行调整(例如,如果数据源正在升级而非生产)。
所以我会做一个像
这样的高级功能MakeURL()
我会提供一个基页字符串,例如“page2.html”,而MakeURL函数会解析一个URL前缀,例如http://staging.site.com或http://alpha.site.com。
如果必须这样,我可以快速更改应用中的每个链接。
现在,除非您正在使用多种不同的环境,否则很少需要将整个URL放在那里。通常/page2.html会起作用,但我有时会使用该函数作为故障保护。