有没有办法阻止这个代码每次打开一个新的浏览器窗口

本文关键字:一个 窗口 浏览器 有没有 代码 | 更新日期: 2023-09-27 18:00:45

Process.Start(url);

每次执行此代码时,我都会在浏览器中获得一个新的选项卡,显示url的内容。有没有办法防止"新选项卡"行为,每次都在同一个选项卡/窗口中打开?

(出于安全考虑,我宁愿不使用WebBrowser控件。(

我正在构建一个桌面应用程序:而不是ASP.NET

有没有办法阻止这个代码每次打开一个新的浏览器窗口

我认为从您的应用程序中不可能做到这一点(至少以任何直接的方式(。当您要求系统通过process.start启动流程时,由目标应用程序(本例中为浏览器(决定如何处理请求。因此,要做到这一点,可能需要调整浏览器(例如Chrome(本身的一些设置。

据我所知,没有。

Process.Start((创建一个新的进程服务器端,并执行您作为参数赋予它的任何命令。大多数浏览器会认为破坏当前运行的进程是对安全的破坏。

我在这里假设您使用的是ASP.NET和web浏览器,因此我建议您应该寻找一个客户端解决方案来打开一个新的选项卡。

<script type="text/javascript">
  function runsomestuff() {
    document.getElementById('mylink').click();
  }
</script>
<body onload="runsomestuff">
 ... 
 <a href="some url" target="_blank" id="mylink" style="display: none;">content of the anchor</a>
</body>

请注意,此代码尚未经过测试。通过对链接使用onclick,您强制客户端浏览器对链接的目标进行确认。然后,浏览器可以整理出如何显示该链接(大多数浏览器会创建一个新的选项卡,但其他浏览器(IE6(总是会打开一个新窗口。

请具体发布一些代码,以便我们看到您正在努力实现的目标。

每次都可能终止进程并重新启动。

您应该能够为将来的调用保留PID。

当您以这种方式执行URL时,您要求Shell为您执行。这意味着外壳决定了什么浏览器,并根据浏览器注册将其移交。通常这意味着打开一个新窗口,但这取决于接收URL的应用程序。

如果你想控制这种默认行为,你需要从注册表中读取URL处理程序,然后针对每种浏览器类型实现处理例程,这些例程可以定位窗口并告诉它导航。

如果这很烦人,那么我建议使用WebBrowser控件制作自己的迷你浏览器。我不确定你在这里有什么安全问题(因为它只是使用IE(-请随意分享。

编辑:
仔细想想,默认行为(IE至少(窗口ID是,任何命名的目标都将在同一窗口中重复使用。因此,只需在命名窗口中打开一个打开目标URL的HTML页面,然后关闭临时HTML框架的窗口。有点像重定向服务,它以某个窗口名称为目标。

不太确定,但本地HTML文件可能有权通过使用window.open(url,'name'…

之类的东西在JS中打开弹出窗口

简而言之,我不得不说不,并强烈建议不要这样做。如果你真的想做到这一点,你应该考虑市场上的每一款网络浏览器,因为你必须向应用程序传递一个命令行参数,我相信每款网络浏览器在这方面都不一样。

Process.Start("http://www.someurl.com"(将启动用户默认的web浏览器,所以它可能不是Internet Explorer。此外,当程序未经询问就打开网页时,很多人都会鄙视。

更重要的是,如果你按照自己的意愿完成了这项任务,而用户后来确实使用了web浏览器来处理一些重要的事情,那么,这就是你存储的要使用的选项卡/窗口,你仍然可以避开那些重要的数据。你可以控制你的程序,但最肯定的不是用户,这是你必须考虑的。