问题标签 [new-window]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5511 浏览

validation - 仅在验证未失败时如何使用 target="_blank" 在新窗口中打开报告

我有一个需要在另一个选项卡中打开的报告,但前提是验证没有失败。在我的情况下,验证失败,并且同一页面在另一个选项卡中打开,并出现验证错误。

0 投票
1 回答
1117 浏览

javascript - javascript可以检测一个窗口是否打开了另一个窗口?

我编写了一个网页,其行为类似于一种信息亭:当它打开时,它会检测它是否是控制窗口。如果没有,它会加载控制窗口页面,并在新窗口中再次打开索引页面,以便检测打开器指针。然后第二个窗口包含一个链接,该链接在第三个窗口中打开任意 url。我的控制器窗口检测第二个窗口是否打开,如果有任何其他窗口聚焦,它会将那个窗口带回到前面。

这个任意网站在过程中的某个时间点打开了另一个测验窗口(不受我的网站控制),但是这个新窗口不断被推到后面,因为我的代码不断将我的第二个窗口向前推进。有什么方法可以检测第二个窗口是否打开了另一个窗口,如果是,阻止我的窗口获得焦点?

下面的代码在主页(index.php)上运行

下面是我的代码,它在控制器窗口(rearWindow.php)上运行

非常感谢您的帮助和反馈。

在我调用 accelWindow.focus() 的第一个 else if 中,我想检查 accelWindow 是否有任何子窗口(这意味着他们打开了测验),如果有,则不调用 accelWindow.focus()。

PS这是我的第一篇文章/问题:)

0 投票
2 回答
3811 浏览

javascript - 如何使用 jQuery/js 打开多个窗口并触发表单提交事件?

给定一个逗号分隔的 URL 字符串,我想为其转换为数组的每个元素打开一个单独的窗口,然后提交一个表单。

以下代码只打开一个窗口,并没有进行表单提交:

当我执行以下操作时,我得到了所需的操作 - 打开了三个新选项卡/窗口,但我看起来表单提交将完成两次并且不太有意义:

有人可以对此有所了解吗?

0 投票
0 回答
209 浏览

html - 在新窗口中打开时自动获取新的 PDF 文档

我知道标头可以确保获取的页面始终是新鲜的: How to control web page caching, across all browsers?

但我只需要在新窗口中获取 PDF。我正在使用以下代码来获取 PDF,但是如何确保 PDF 本身是新的(非缓存版本)?

因为我的应用程序一直在动态创建 PDF 文档,所以我想要最近的一个。难道不能简单地做到这一点吗?还是我需要为此专门编写一个 PHP 页面?

0 投票
1 回答
14280 浏览

c# - 获取 WebBrowser.NewWindow 事件的 URL

我正在尝试将新的 Window 事件重定向到新选项卡:

我不确定 usingWebBrowser.StatusText是获取新窗口 url 的最佳方式(这不适用于我测试过的每个站点)。

是否有更好的类/方法可以调用来获取新的窗口目标?


更新:

我已经尝试过查理建议的解决方案

  1. 添加了 Microsoft Internet Control (COM) 参考
  2. 使用 SHDocVw 添加;
  3. 使用了代码:

    System.Windows.Forms.WebBrowser myWebBrowser = new System.Windows.Forms.WebBrowser();
    SHDocVw.WebBrowser axBrowser = (SHDocVw.WebBrowser)myWebBrowser.ActiveXInstance;
    axBrowser.NewWindow3 += new DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3);

不幸的是,我收到了NullReference Exception我无法纠正的第三行。


解决方案:

我认为解决方案不在相关答案中(或者我无法找到它),因为它解释了如何实现 NewWindow2 事件(而不是处理原始目标 url 的 NewWindow3),并且建议的实现是相同的这里会导致 NullReference Exception 错误。
无论如何,我发现了这两个帖子:

建议是将前三行修改为这一行:

System.Windows.Forms.WebBrowser现在一切正常,我能够在所有其余代码中继续使用原始代码。

0 投票
2 回答
264 浏览

javascript - 在 Javascript 中构建动态链接

我在下面有这段代码:

我想创建段落元素,当我单击它们时,会打开一个包含正确数组内容的新窗口。但我能够建立不同的链接。我所有的段落都会打开一个新窗口,其中包含最后一个索引处的数组内容。这有什么诀窍吗?

0 投票
3 回答
12803 浏览

javascript - 使用 javascript 将 html 写入新窗口

我一直在做一些关于打开一个新窗口并使用 jQuery/JavaScript 将 HTML 写入它的研究,看起来正确的方法是:

为新窗口创建一个变量

插入新数据并使用变量

对我来说,这完全有道理。但是,当我尝试将其合并到我的脚本中时(“数据”是 HTML 的持有者),它不会打开一个新窗口......除非我只是错过了一些简单的东西,据我所知它看起来很棒。 ..

有任何想法吗?

PS 控制台中似乎没有错误

0 投票
1 回答
1052 浏览

javascript - JavaScript 结果黑客不起作用

问题:让这个黑客工作我缺少什么?

对于我正在开发的 MVC 应用程序,我遇到了一个“不寻常”的案例。

我们使用 ActiveReports 生成某些报告,对于被允许的用户,在我们的布局上显示一个 ActionLink,允许访问这些报告,这些报告在新窗口中打开。该项目的方向是所有报告都应在新窗口中打开。

但是,有一个异常值我无法应用简单的 ActionLink 修复,因为我们使用由几乎一个下拉列表和一个文本字段组成的覆盖来访问此报告。这些组合被馈送到控制器,该控制器根据给定条件返回对动作的重定向(有一些特定的检查应该只发生在服务器上,因此我们不只是在这个覆盖层上的 JavaScript 中执行此操作对话。)

现在,我不想让像 MVC 这样的小限制(直接)不允许我重定向到新窗口阻止我,所以我尝试了给定的 JavaScriptResult hack,因为这已经是一种过时的情况,而且看起来尽管是一个黑客,但对于我的问题来说,这是最简单和最可维护的解决方案:

当然,当我运行Foo导致此方法触发的操作(的输入,正确的下拉选项)时,我会看到以下输出:

...而不是关于那段 JavaScript 应该自动打开的报告。

虽然我知道这种用法(在大多数情况下)被认为是一种反模式,但我不能随意修改 UI 以适应更可接受的用法。

问题:让这个黑客工作我缺少什么?

编辑:尝试了另一种也不起作用的替代实现:

这同样没有效果。

编辑:另一个不成功的黑客尝试:

编辑:这种情况的邪恶影响很大!新的方向已经出现,以避免控制器中的这些邪恶操作,而是在 JavaScript 中执行它们。话虽如此,我仍然对让 hack 工作的实际方法感到好奇,只是为了我自己的启迪。

0 投票
2 回答
108 浏览

javascript - 通过Javascript打开新窗口

我有一些简单的代码可以打开 reddit,但我需要它在新窗口中打开。尝试了一些不同的方法,但无法正常工作。知道要在下面的代码中添加什么吗?

0 投票
2 回答
7071 浏览

c# - ASP.Net WebForms LinkBut​​ton 单击,打开新选项卡,通过隐藏的 html 输入变量传递 id

我有一个带有通过用户控件构建的转发器的 aspx 网络表单页面。每个中继器项目都有一个链接按钮。我想要发生的是,当单击 LinkBut​​ton(在页面 A 的用户控件上的中继器中)时,会在新选项卡中打开 url,并传递该 LinkBut​​ton 旁边的隐藏 ID(根据 Web 开发安全性最佳实践如果可能)到新选项卡中的 aspx 页面(页面 B)。 

页面 A 和页面 B 都在同一个应用程序中。

我上面描述的目的是让用户在从通过单击链接按钮打开的 URL 返回后可以轻松地返回到他们的搜索结果。

我对如何做到这一点的想法持开放态度,这些想法更接近标准的最佳实践方法。


到目前为止,我已经尝试过:

1) 跨页发布——这适用于传递 id,但不适用于在新标签中打开。

2)将 PostBackUrl 设置为页面 B 的 url,使用 OnClientClick 调用 javascript 设置 Page.Form.Target="_blank" 以将来自用户控件的隐藏 ID 设置为页面 B 上的 html 隐藏输入的值。 

3) 我还尝试在 OnClientClick 中使用 window.open("page B url", "_newtab")。

  • a) 到目前为止,唯一有效的方法是上述 3 种不同方法中的第 2 种。 

    但是,在新选项卡中加载页面 B 后,我不知道如何将页面 A 的 Page.Form.Target 重置为之前的状态,然后将其设置为“_blank”

  • b)我尝试过的重置 Page.Form.Target 的方法是:

    • 1) 重置页面 A 的 Page_Load 中的目标,其中 IsPostBack == true --> 导致页面 B 加载与页面 A 相同的内容。

    • 2) 在页面A的用户控件的Page_Load中重置目标->与方法1相同的结果

    • 3)在页面A的用户控件中重置页面A的用户控件的LinkBut​​ton的OnUnLoad中的目标-->与方法1相同的结果

    • 4) 通过 LinkBut​​ton 的 OnClientClick 重置 javascript 中的目标 --> 不起作用

    • 5) 使用来自页面 A 的包含对页面 A 表单的引用的公共变量重置页面 B 的 Page_Load 中的目标
      (类似于可以通过跨页面发布完成的操作)--> 不起作用。 


我想接下来尝试的是:

1)     在页面A上包装另一个用户控件以显示页面B的内容,在asp面板(面板B)中

2)     将页面B的内容放入新的用户控制页面

3)     将页面A上的搜索结果内容包装在一个asp Panel(Panel A)中。

4)     当新用户控件上的repeater中的LinkBut​​ton被点击时,Panel A中的搜索结果内容将被隐藏,Panel B将显示出来。

5)     当用户想要返回搜索结果时,点击Panel B内容中的“Return to Search”链接按钮,Panel B会被隐藏,Panel B的内容会被清除,Panel A会再次显示。


我还不确定这是否会奏效。

看起来这应该不是那么困难。

这是一个直截了当的概念,我认为这是 Web 开发中相当普遍的情况。

我觉得 Wiley Coyote 试图抓住 Road Runner,因为我想出了精心设计的聪明、深思熟虑的计划,但都完全失败了。

我现在举着一个小牌子,上面写着:“救命!