问题标签 [popup-blocker]

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 投票
0 回答
67 浏览

c# - 如何在单击按钮的客户端操作之前强制服务器端(C#.NET)操作发生以避免弹出窗口被阻止?

我正在尝试创建三个按钮。ButtonAdd 添加一个新的介绍屏幕并在新窗口中打开一个编辑器以对所述屏幕进行更改。Button1 仅在用户尚未添加介绍屏幕时可见。ButtonRemove 删除介绍屏幕。ButtonEdit 打开编辑器以更改介绍屏幕。ButtonRemove 和 ButtonEdit 仅在用户已经添加了介绍屏幕时才可见。我遇到的问题是ButtonAdd。

ButtonAdd 需要进行服务器调用才能实际创建对象并将其保存在数据库中:

ButtonAdd 还需要进行客户端调用才能打开编辑器。打开编辑器的 URL 需要知道关于新对象的某些信息(screenid 和 contentid):

所以基本上需要首先进行服务器调用。否则客户端调用不知道 screenID 或 contentID 使用什么。所以我尝试从服务器或后面的代码中调用客户端函数。像这样:

这非常有效。除了弹出窗口阻止程序不喜欢这样。所以他们不允许弹出编辑窗口。有没有办法绕过这个弹出窗口被阻止?还是我没有考虑解决这个问题的另一种方法?

0 投票
1 回答
1282 浏览

javascript - 文件下载被浏览器弹出窗口阻止程序阻止

我在 php 中有一个调用下载文件的文件下载功能,但浏览器弹出窗口阻止程序阻止它打开。

目标是有一个提交表单的 html 表单提交按钮,根据表单输入在服务器上编辑 rtf 文件,然后将新文件下载给用户。

因为我需要 php 在用户单击下载之后和文件下载之前运行一些代码,所以我无法让它以任何其他方式工作。我必须让 php 回显一个链接,然后是一些点击该链接的 js 代码。

下载功能:

下载.php:

0 投票
1 回答
691 浏览

javascript - Cordova ios 应用程序 - 由于弹出窗口阻止程序而无法打开链接

我有一个cordova应用程序,它根据一些版本匹配逻辑从服务器下载一个angularjs应用程序(比如' MyAngularApp ')。这个“ MyAngular ”应用程序位于一个压缩文件夹中,我的cordova 应用程序将其解压缩并存储在移动设备上的永久位置。

成功下载并解压缩“ MyAngularApp ”后,我使用file://path_to_angularjs_application_in_device/MyAngularApp/index.html从设备上的持久位置启动“ MyAngularApp/index.html ”

现在,我面临的问题是,当用户在 iOS 上单击“ MyAngularApp ”中的链接时,popupblocker 会阻止页面打开。在“ MyAngularApp ”中编写的用于打开页面的代码是

我知道如果我们可以在上面进行更改以修改代码并将 _blank 替换为 _system,理论上它应该可以工作,但问题是我无法在“ MyAngularApp ”代码中进行更改。

我尝试从 Safari 设置中关闭 popupblocker 设置,但这没有帮助。这里要考虑的一点是我不能在“ MyAngularApp ”代码中进行更改。我只能修改我自己的下载此“ MyAngularApp ”的科尔多瓦应用程序。

此问题仅在 iOS 中发生。这在 Android 上完美运行。
在 iOS 12+ 版本上测试。科尔多瓦 7.0.0 版

我试过什么?

  1. 转到Settings Safari Block Pop-ups Disable(没有用。新窗口仍然没有打开)
  2. 安装cordova InAppBrowser 插件并分配window.open = cordova.InAppBrowser.open(不起作用,因为这里的问题是,如果代码在我的cordova 应用程序加载之前适用。一旦“ MyAngularApp ”加载,上下文就会改变,这段代码不再在上下文中)。

有任何想法吗 ?

0 投票
1 回答
190 浏览

javascript - 仅当在 chrome 中打开开发工具时,catch 块内的 Javascript 'alert' 功能才有效

你好 StackOverflow 社区!

我遇到了一个非常奇怪的问题,找不到任何有用的信息来解决它。

不知何故,只有在谷歌浏览器中打开开发工具窗口(停靠或作为单独的窗口)时,一段 javascript 代码才有效。

原始问题:由于我们的应用程序结构,我们需要在提供页面时自动打开多个弹出窗口。由于弹出窗口不是通过直接的用户交互(如 onclick)打开的,现代浏览器会自动阻止这些弹出窗口。由于需要重构大量代码以避免这种情况,我们的解决方案是:

  • 检查浏览器是否阻止了某些弹出窗口。
  • 如果是这样:通知用户并建议关闭他们浏览器对我们网站的弹出窗口阻止功能(例如将其添加到例外列表中)。

我知道这不是一个非常优雅的解决方案,但没有其他方法,所以请不要评论如何以不同的方式做到这一点。

javascript代码:

窗口必须是弹出窗口。popupBlockingErrorShown变量是为了防止每个弹出窗口都有一条消息alert

在 Firefox 中运行良好。但是在谷歌浏览器中有这种行为:

  • 没有打开开发工具:第一个弹窗正常打开,其他弹窗被阻止,没有警报消息

  • 打开开发工具:第一个弹出窗口打开但在加载时“卡住”(这是一个空页面)。警报信息正常显示。

保持浏览器窗口打开并简单地在打开或关闭的开发工具之间切换会产生相同的行为。

任何人都可以帮助我吗?非常感激!

这是我的第一个 stackoverflow 问题,我对编程还是很陌生,我有一年多的经验。欢迎对我的“提问”技能发表评论。

0 投票
0 回答
66 浏览

javascript - 用户批准阻止弹出窗口打开时的窗口事件?

关于访问被阻止的弹出窗口有很多类似的问题没有一个适合这些情况。

用户流程:

  • 用户点击按钮。

  • 按钮单击触发异步服务器调用。当服务器调用返回(> 1-2 秒)时,JavaScript 代码将打开新窗口(具有相同的域)。

  • 正如其他问题所记录的那样,大多数浏览器都会阻止这个新窗口。

  • 我们当前的解决方法是每 3 秒轮询一次以查看窗口是否打开。这种方法的问题是代码打开了多个窗口,即使我们只想要一个。

  • window.opener从新打开的窗口使用似乎不可靠,因为一些答案表明window.opener在 FireFox 和 Safari 中无法始终访问。

因此这个问题:当一个被阻止的弹出窗口最终打开时,是否有一个我们可以订阅的窗口事件被调用?

最终,目标是在新窗口打开并准备好后立即调用新窗口中的代码。

0 投票
0 回答
48 浏览

javascript - 获取对以前被弹出窗口阻止程序阻止的窗口的引用?

下面的代码在启用弹出窗口阻止程序时捕获。

在我们的代码中,弹出窗口被阻止,因为此代码在用户单击几秒钟后被调用,时间足以触发弹出窗口保护。

当弹出窗口被阻止时,newWindownull.

当用户允许被阻止的窗口时,有没有办法获得对先前被阻止的窗口的引用?

0 投票
1 回答
172 浏览

javascript - 如果有延迟,则在 onclick 处理程序中触发弹出窗口阻止程序

在实施支付网关时,我遇到了最好的用户体验,将弹出窗口用于 3D 安全流程。

流程是这样的:

  1. 用户在付款页面上并将信用卡数据输入到托管字段中。
  2. 在“购买”onclick 事件中,我调用网关的 javascript 片段来获取卡令牌。
  3. 我将其发布到后端。
  4. 后端检查是否需要 3DS。
  5. 如果是,前端会打开一个带有 3DS 表单的新窗口。

onclick 的代码如下:

通常这没有问题并且弹出窗口会打开,但如果Tokenize方法或$.ajax调用完成时间过长,则会触发弹出窗口阻止程序。即使加入async: false通话$.ajax也无济于事。

我能做些什么来在所有情况下都能做到这一点吗?目前我能想到的唯一解决方案是在单击事件开始时打开一个弹出窗口,然后在可用时加载 URL,或者如果弹出窗口被阻止,则让用户单击其他按钮。两者似乎都不理想。

0 投票
0 回答
91 浏览

safari - 由于 Safari 弹出窗口阻止程序,插件认证被阻止

我们已经提交了我们的 Outlook 插件进行认证,并收到以下消息:

“加载项未通过 Safari 中的 Outlook 网页版兼容性测试(版本:13.1(15609.1.20.111.8))。

当我们在上述浏览器的消息阅读模式下单击“计划”按钮时,似乎没有启动任何内容。”

我们可以在本地重现这个,但原因是弹出窗口阻止程序阻止了我们调用时 office sdk 试图打开的窗口Office.context.mailbox.displayNewAppointmentForm。我们的插件没有专门调用 window.open。

我们还在 Firefox 中测试了这种行为,得到了相同的结果。请让我知道如何从这里继续前进。

0 投票
2 回答
59 浏览

javascript - Google Drive (Web) 中的下载如何工作?

我目前正在 Web 应用程序中实现文件下载。我在弹出窗口阻止程序上有点挣扎,下载需要在用户交互后立即开始,所以不能有服务器往返。现在我注意到,例如 Goolge Drive 允许您下载文件夹。当您这样做时,他们的服务器首先会创建一个压缩的 zip 文件,这需要一些时间。服务器完成后,下载会立即开始,无需其他用户交互。

现在我想知道如何做到这一点?

0 投票
0 回答
36 浏览

android - Android webview 显示 url 的空白,该 url 具有弹出窗口阻止程序并在浏览器的新选项卡中打开

我正在研究 Android 中的支付网关集成。我从 API 获得了一个 URL,当我在 chrome 网络浏览器中打开此 URL 时,弹出窗口阻止程序会阻止此 URL,当我允许时,它会自动打开一个新选项卡并在其中打开。

当我在 Webview 中打开此 URL 时,它只显示空白屏幕。我在 Webview 中尝试以下设置。

请帮我。