【问题标题】:Relative URLs in Actionscript 3Actionscript 3 中的相对 URL
【发布时间】:2009-10-16 00:02:03
【问题描述】:

我有一个使用 Actionscript 3 的 Flash 电影,其中有一些按钮可以打开指向新页面的链接。这是我用于重定向到新页面的代码:

myButton.addEventListener(MouseEvent.CLICK, function(e:MounseEvent) {
    var request:URLRequest = new URLRequest('http://www.example.com/page2.html');
    navigateToURL(request, "_top");
});

它在我的生产服务器上运行良好,带有完整的 url,包括域,但是当我把它改成这个时:

var request:URLRequest = new URLRequest('page2.html');

它不再在生产中工作。我在这里想念什么?我希望不必将整个 URL 编码到电影中。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    URLRequests 与包含它们的 HTML 文件相关(无论您的 SWF 位于何处),因此您需要考虑到这一点。 您可以设置 EMBED/OBJECT 的一个可选属性来更改此行为,请参见此处:

    基础 - 。或 [基本目录] 或 [URL]。指定基目录或 用于解析所有相对路径的 URL Flash Player 影片中的语句。 当您的 Flash Player 电影保存在 与您的其他目录不同的目录 文件。

    http://kb2.adobe.com/cps/127/tn_12701.html

    编辑: 此外,请尽量避免对相对文件使用绝对 URL,因为您可能会遇到沙盒错误,例如,在没有“www.”的情况下加载网页。...

    【讨论】:

      【解决方案2】:

      尝试使用 /page2.html

      【讨论】:

        【解决方案3】:

        /page2.html 应该可以按照 Chris 的建议正常工作。

        另外,对于具有大量 URL 的大型项目,我经常做的一件事就是简单地创建一组全局链接函数,我可以在不同的启动环境之间切换。

        在我工作的地方,我们在生产环境、暂存环境和各种测试环境之间至少有 4 或 5 个不同的环境,并且有时必须调整 URL(例如,如果数据源处于暂存状态而不是生产状态)。

        所以我会做一个像这样的高级函数

        MakeURL()

        我会提供一个基本页面字符串,例如“page2.html”,MakeURL 函数会解析一个 URL 前缀,例如 http://staging.site.comhttp://alpha.site.com

        这样,如果需要,我可以快速更改应用程序中的每个链接。

        现在,除非您使用多种不同的环境,否则您很少需要将整个 URL 放在那里。通常 /page2.html 会起作用,但我有时会将该功能用作故障保护。

        【讨论】:

        • 这总是非常方便...在最近的一个项目中,我扩展了在测试和生产环境中添加带有版本号 (?v=1.0.3) 的后缀的想法,以避免缓存不需要的文件...这样,每次在合理的文件中发生更改(这可能会使用旧文件破坏某些内容)我会更改版本号(作为主 swf 的参数),因此用户将下载一组新的所有文件并将它们缓存到下一次核心迭代。事实证明它非常有用,特别是在与客户端检查更改时:)
        猜你喜欢
        • 2011-01-01
        • 1970-01-01
        • 2012-03-07
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 2012-12-26
        • 2012-03-11
        • 2011-01-26
        相关资源
        最近更新 更多