javascript-使用Silverlight 3的HtmlPage.Window.Navigate方法重用已经打开的浏览器窗口
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用Silverlight 3的HtmlPage.Window.Navigate方法重用已经打开的浏览器窗口,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2497字,纯文字阅读大概需要4分钟。
内容图文
我想使用外部浏览器窗口在Silverlight应用程序中实现预览功能.这里有一个项目列表,每当用户单击其中一个项目时,它就会在单独的浏览器窗口中打开(内容是pdf文档,这就是为什么它会被SL应用程序处理的原因).
现在,要实现此目的,我只需使用
HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "_blank");
效果很好.
现在,我的客户不喜欢每次点击都会打开一个新的浏览器窗口的事实.他希望每次单击项目时都可以重用浏览器窗口.所以我出去尝试实现这一点:
选项1-使用Navigate方法的重载,如下所示:
HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "foo");
我假设在后续调用中使用相同的目标参数值(foo)时,将重用该窗口.
这是行不通的.每次都会有一个新窗口.
选项2-在HtmlPage上使用PopupWindow方法
HtmlPage.PopupWindow(new Uri("http://www.bing.com"), "blah", new HtmlPopupWindowOptions());
这是行不通的.每次都会有一个新窗口.
选项3-获取打开的窗口的句柄并在后续调用中重用
private HtmlWindow window;
private void navigationButton_Click(object sender, RoutedEventArgs e)
{
if (window == null)
window = HtmlPage.Window.Navigate(new Uri("http://www.bing.com"), "blah");
else
window.Navigate(new Uri("http://www.bing.com"), "blah");
if (window == null)
MessageBox.Show("it's null");
}
这是行不通的.我为PopupWindow()方法尝试了相同的操作,并且每次窗口都为空,因此每次单击都会打开一个新窗口.我已经检查了EnableHtmlAccess和IsPopupWindowAllowed属性,它们都返回true,即as they should.
选项4-使用Eval方法执行一些自定义JavaScript
private const string javascript = @"var popup = window.open('', 'blah') ;
if(popup.location != 'http://www.bing.com' ){
popup.location = 'http://www.bing.com';
}
popup.focus();";
private void navigationButton_Click(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Eval(javascript);
}
这是行不通的.每次都会有一个新窗口.
选项5-使用CreateInstance在页面上运行一些自定义JavaScript
private void navigationButton_Click(object sender, RoutedEventArgs e)
{
HtmlPage.Window.CreateInstance("thisIsPlainHell");
}
在我的aspx中
function thisIsPlainHell() {
var popup = window.open('http://www.bing.com', 'blah');
}
这行不通.每次都会有一个新窗口.
难道我做错了什么?我绝对不是JavaScript专家,所以我希望我在这里找不到明显的东西.
干杯,
菲尔
解决方法:
这是浏览器的安全功能.重用命名窗口仅限于该窗口当前显示的文档域.
承载Silverlight控件的页面将从“ http://www.yoursite.com”运行,因此,如果该窗口当前还显示“ http://www.yoursite.com”的内容,则它只能重复使用名为“ foo”的窗口.由于您已将“ http://www.bing.com”加载到该窗口中,因此在上下文“ http://www.yoursite.com”中运行的代码不再可见.因此,当您使用“ Foo”打开窗口时,浏览器不会看到具有该名称的当前窗口,因此会创建另一个窗口.
内容总结
以上是互联网集市为您收集整理的javascript-使用Silverlight 3的HtmlPage.Window.Navigate方法重用已经打开的浏览器窗口全部内容,希望文章能够帮你解决javascript-使用Silverlight 3的HtmlPage.Window.Navigate方法重用已经打开的浏览器窗口所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。