webbrowser 遇到JS window.open 问题

mdjcad 2010-04-29 11:22:18
用webbrowser页面中有如下代码,点击新窗口被拦截并新建控件打开。
问题是第二个openerr页面也很快被打开。肯定是window.open没有正确返回,该怎么办呢?

var istrue=window.open("location.php?url="openok");
if(istrue==null){
window.location.href="location.php?url="openerr";
}

我用一个叫BrowserExtended封装过webbrowser控件,请不要叫我改用其它封装控件,我程序已经完成了。
...全文
977 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdjcad 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 njw1028 的回复:]
这js写的也太有问题了。
[/Quote]
晕,复制代码时改错了,这下行了吧,其实不管window.open(内容是什么在IE里只要弹出,isture就不为null)
var istrue=window.open("http://www.baidu.com");

测试语句
javascript:alert(window.open("http://www.baidu.com"));
在IE中返回object,新窗口被打开;
在我的程序中返回null,新窗口被打开,为什么我的会返回null呢?
我发现1个问题,我的BrowserExtended(一个封装过webbrowser控件)在检测中发现不支持弹出页面。但使用中发现可以弹出页面。
mdjcad 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 njw1028 的回复:]
这js写的也太有问题了。
[/Quote]
晕,复制代码时改错了,这下行了吧,其实不管window.open(内容是什么在IE里只要弹出,isture就不为null)
var istrue=window.open("http://www.baidu.com");

测试语句
javascript:alert(window.open("http://www.baidu.com"));
在IE中返回object,新窗口被打开;
在我的程序中返回null,新窗口被打开,为什么我的会返回null呢?
我发现1个问题,我的BrowserExtended(一个封装过webbrowser控件)在检测中发现不支持弹出页面。但使用中发现可以弹出页面。
mdjcad 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 njw1028 的回复:]
这js写的也太有问题了。
[/Quote]
晕,复制代码时改错了,这下行了吧,其实不管window.open(内容是什么在IE里只要弹出,isture就不为null)
var istrue=window.open("http://www.baidu.com");

测试语句
javascript:alert(window.open("http://www.baidu.com"));
在IE中返回object,新窗口被打开;
在我的程序中返回null,新窗口被打开,为什么我的会返回null呢?
我发现1个问题,我的BrowserExtended(一个封装过webbrowser控件)在检测中发现不支持弹出页面。但使用中发现可以弹出页面。
njw1028 2010-05-05
  • 打赏
  • 举报
回复
这js写的也太有问题了。
mdjcad 2010-05-05
  • 打赏
  • 举报
回复
想了想上面表达太复杂了,来个简单的
var istrue=window.open("location.php?url="openok");

为什么我用BrowserExtended(一个封装过webbrowser控件)执行上述代码返回的istrue为null.
明白否?
mdjcad 2010-05-05
  • 打赏
  • 举报
回复
如果一个人不明白,不一定是自己的错,如果所有人都不明白,我是反省一下,重新表达一次。

一个页面中有如下JS

var istrue=window.open("location.php?url="openok");//1行
if(istrue==null){//2行
window.location.href="location.php?url="openerr";//3行
}

当浏览器执行到第1行的时候打开个新窗口,加载openok,如果istrue为空(第2行),在则原页面加载openerr(第3行);如果istrue不为空,第3行就不执行。不管怎样openok和openerr只有一个会被加载对吧。
我遇到的问题:
我用一个叫BrowserExtended封装过webbrowser控件执行的时候,第1行,打开了新窗口,openok加载正常,第2行istrue依然为空,造成第3行也执行了(在原窗口加载了openerr)。这样openok和openerr都被加载了.
问题应该出在var istrue=window.open("location.php?url="openok");//1行
为什么打开成功却返回null?

这下大家该看明白我想表达的意思了吧。


捷哥1999 2010-05-04
  • 打赏
  • 举报
回复

this.axWebBrowser.RegisterAsBrowser=true;

第二个窗口,你没有注册,所以用ie打开了。
捷哥1999 2010-05-04
  • 打赏
  • 举报
回复
我知道你的意思了,你在打开的第一个窗口之前,肯定将自己的程序注册成网页浏览器,但是第二个窗口,你没有这么做!
mdjcad 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zenghd 的回复:]
不明白你的问题,是不是说,window.open没有被NewWindow事件拦截?
[/Quote]

我的意思是两个window.open都执行了。第一个被newwindow拦截打开了。第二个在原窗口被打开了。按程序应该打开第一个就不会打开第二个吧。
mdjcad 2010-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyq11 的回复:]
在webbrower中打开页面,不要在新窗口
[/Quote]

我不希望在原页面中打开新的连接,因为原页面中有其它内容。
ZengHD 2010-05-03
  • 打赏
  • 举报
回复
不明白你的问题,是不是说,window.open没有被NewWindow事件拦截?
mdjcad 2010-05-03
  • 打赏
  • 举报
回复
看来又无结果了,来csdn几次都不爽。唉。
walkghost 2010-04-30
  • 打赏
  • 举报
回复
代码改成如下,运行正常。


<script>
var istrue=window.open("http://www.baidu.com/index.html?s='location.php?url=openok'");
if(istrue==null){
window.location.href="http://www.baidu.com/index.html?s='location.php?url=openok'";
}
alert(istrue);
</script>

楼主将JS代码改成下面的试试:



var istrue=window.open("location.php?url='openok'");
if(istrue==null)
{
window.location.href="location.php?url='openerr'";
}



wuyq11 2010-04-30
  • 打赏
  • 举报
回复
在webbrower中打开页面,不要在新窗口
mdjcad 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 eexenet 的回复:]
在程序上 判断webbrowser里面的doc代码进行修改操作.

if(js里面怎么做)
{
//webbrowser 你要跟我向js一样去做.
}
[/Quote]

没看明白
mdjcad 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guichuan 的回复:]
你可以获取此页面,分析逻辑再去请求.
[/Quote]
其实两个连接内容一样的,问题是每次点了连接连接都会被打开。
guichuan 2010-04-30
  • 打赏
  • 举报
回复
你可以获取此页面,分析逻辑再去请求.
mdjcad 2010-04-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 walkghost 的回复:]
代码改成如下,运行正常。

JScript code


<script>
var istrue=window.open("http://www.baidu.com/index.html?s='location.php?url=openok'");
if(istrue==null){
window.location.href="http:……
[/Quote]

谢谢你的回答
不过问题是这个页面是别人的我法修改
EexeNet 2010-04-30
  • 打赏
  • 举报
回复
在程序上 判断webbrowser里面的doc代码进行修改操作.

if(js里面怎么做)
{
//webbrowser 你要跟我向js一样去做.
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧