如何在Windows Phone 7浏览器中通过javascript打开新窗口或选项卡

时间:2012-08-30 16:29:19

标签: javascript windows-phone-7 windows-phone

是否可以通过javascript浏览器中的Windows Phone 7打开新窗口或标签页?

{p> window.open似乎不受支持,也不target='_blank'

我在这里遗漏了什么吗?这个基本功能在iphone和android上运行得很好。 关于如何在Windows Phone 7中使用它的任何想法?

3 个答案:

答案 0 :(得分:27)

在Windows Phone 7上,这不可能以编程方式进行。它完全在用户手中。

引用Microsoft employee

  

"用户可以通过点击并按住链接来打开新标签中的链接   获取上下文菜单但锚定或脚本请求以定位新的   窗口被忽略。

     

有几个原因:

     
      
  • 不支持跨窗口通信。
  •   
  • Windows Phone只有一个实例   浏览器如此新的" windows"必须以Tab的形式打开。
  •   
  • 浏览器体验是全屏的,因此用户没有良好的视觉提示   已移至新标签,除非他们明确要求。
  •   
  • 导航"返回"在一个新的选项卡中退出浏览器即可   如果用户不知道创建了新的标签,则会让用户感到困惑。"
  •   

答案 1 :(得分:3)

如果您尝试为in-ap浏览器控件添加此功能,我建议您采用一种方式。

您必须在浏览器控件能够成功加载页面的每个网页上注入一个java脚本。在java脚本中使用window.extern.notify来调用后面代码中的ScriptNotify函数。在检测到相应的消息时,创建一个新的浏览器控件实例并将其添加到数组或列表中。因此,您可以模拟用于应用程序内浏览器控件的新选项卡功能。

要注入的JS代码可能类似于String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

可以使用browser.InvokeScript("eval", NEW_TAB_FUNCTION);

注入

在ScriptNotify中检查addnewtab(保留IsScriptEnabled = True

    void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e)
    {
        if (e.Value == "addnewtab")
        {   
            //do work here
        }
    }

请注意,我已经在JS中重写了window.open函数,该函数每次都会在新网页上注入,以便获得用户输入的通知。

另请注意,这仅适用于WebBrowser Control而非外部浏览器。

答案 2 :(得分:0)

我的解决方法这个问题很简单:

window.open
如果失败,

返回null,所以在这种情况下我在同一个窗口中打开它:

var win = window.open(href, '_blank');
    if(!win || win==null){
        window.location.href = href;
    }else{
        win.focus();     
    }
无论如何,这都是一个很好的做法...