【问题标题】:Adobe AIR (html/javascript): navigateToUrl's window parameter not workingAdobe AIR (html/javascript):navigateToUrl 的窗口参数不起作用
【发布时间】:2011-04-27 23:46:50
【问题描述】:

在 Adob​​e Air 项目 (html/javascript) 的默认浏览器中导航到 URL 时出现问题。

air.navigateToUrl(request, windowName) 启动浏览器并显示页面,但它会为每个请求显示一个新选项卡。

下面是重现问题的新 Air 应用程序主页的一个非常简单的示例:

<html>
    <head>
        <title>navigateToURLTest</title>
        <script type="text/javascript" src="lib/air/AIRAliases.js"></script>        
    </head>
    <body>      
        <a href="#" onclick="javascript:air.navigateToURL(new air.URLRequest('http://www.adobe.com'), 'TestWindow');return false;">Same Tab</a>
    </body>
</html>

如何在同一窗口/选项卡中打开网址?

【问题讨论】:

  • 我看起来像 Air 中的一个错误,但必须有解决方法。任何想法

标签: javascript html navigation air


【解决方案1】:

您应该让两个锚点指定相同的目标:

<html>
    <head>
        <title>navigateToURLTest</title>
        <script type="text/javascript" src="lib/air/AIRAliases.js"></script>
    </head>
    <body>
        <a href="http://www.google.com" target="testp"
            onclick="javascript:air.navigateToURL(new air.URLRequest('http://www.adobe.com'), 
            'TestWindow');return false;">New Tab</a>
        <br />
        <a href="http://www.adobe.com" target="testp"
            onclick="javascript:air.navigateToURL(new air.URLRequest('http://www.adobe.com'), 
            'TestWindow');return false;">Same Tab</a>
    </body>
</html>

如果在您当前的标签列表中没有打开名称为 "testp" 的窗口,它将打开一个新标签,如果您已经拥有它,那么它将被更改。

【讨论】:

  • @rekaszeru:谢谢。我添加了 _blank 目标只是为了显示 Air 中可用的两种可能方法(未指定目标默认为 _blank)。
  • @rekaszeru:当我使用命名窗口参数多次单击锚点时会出现问题。 (或者在你的代码中,当我点击两个链接时,我打开了两个选项卡。
  • 因此您必须每次指定目标,这样您就可以确保链接将在同一个选项卡(窗口)中打开。出现什么问题?
  • 问题是链接总是在新窗口中打开。尝试使用 Chrome 作为默认浏览器并使用 IE 作为默认浏览器。我尝试过调试 Air(在 Aptana 工作室中),但也是在完整安装 HTML/Javascript Air 应用程序之后。 Adobe 文档声明“_self”和命名窗口参数都可以使用。但它是命名的窗口参数不起作用。
  • 所以你的问题是打开了一个新窗口而不是一个新标签?这应该在浏览器设置中更正。否则,上面的代码(即使将href 属性更改为“#”)会执行应有的操作,搜索“testp”选项卡/窗口,并在其中打开其链接。
【解决方案2】:

这段代码对我有用:

navigateToURL(new URLRequest("http://www.adobe.com"), '_self');

应用于您的代码:

<html>
<head>
    <title>navigateToURLTest</title>
    <script type="text/javascript" src="lib/air/AIRAliases.js"></script>
</head>
<body>
    <a href="#" onclick="air.navigateToURL(new air.URLRequest('http://www.adobe.com'),'TestWindow');return false;">Same Tab</a>
</body>
</html>

请注意两件事, rekaszeru 在 href 中添加了一个链接(不应该存在...与 target= 相同) 其次,onclick 事件不需要“javascript:”

【讨论】:

  • @Rephael:这正是我所做的。那对你有用吗?不适合我。 (在 Aptana Studio 中调试)。
  • 我刚刚在 Flash Builder (ActionScript) 中创建了相同的 Air 应用程序。同样的问题。
  • 只是一个评论,我会有 href="javascript:void();"因为我讨厌井号(它会跳到页面顶部)
  • 你注意到我改变了答案吗?
  • @Rephael:抱歉,没注意到。我希望 StackOverflow 立即发送通知! (和叫醒电话)。我会尽快试试。但有一件事,“_self”参考也对我有用。是 windows 参数没有。但我会尝试“应用于您的代码部分”。
猜你喜欢
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多