是否可以通过javascript
浏览器中的Windows Phone 7
打开新窗口或标签页?
window.open
似乎不受支持,也不target='_blank'
。
我在这里遗漏了什么吗?这个基本功能在iphone和android上运行得很好。 关于如何在Windows Phone 7中使用它的任何想法?
答案 0 :(得分:27)
在Windows Phone 7上,这不可能以编程方式进行。它完全在用户手中。
"用户可以通过点击并按住链接来打开新标签中的链接 获取上下文菜单但锚定或脚本请求以定位新的 窗口被忽略。
有几个原因:
- 不支持跨窗口通信。
- 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();
}
无论如何,这都是一个很好的做法...