Chrome中SuppressDifferentOriginSubframeJSDialogs设置是否可以使用JS进行覆盖?

6
Chrome开发团队最近推出了一个名为SuppressDifferentOriginSubframeJSDialogs的新"功能",默认情况下会阻止来自与父级不同域名的iFrame中的alert+confirm框出现:https://www.chromestatus.com/feature/5148698084376576 这意味着如果您有一个嵌入式表单,并且依靠标准JavaScript alert来通知用户错误(或确认是否要进行更改),则它现在什么也不做,完全破坏了用户体验。
显然,我们可以使用自定义警告和确认覆盖内置的警告和确认,但是移动到不同于浏览器内置技术的东西现在需要重新设计每个UI(移动、平板电脑、笔记本电脑、台式电脑等)。
有没有办法更改此跨域设置,或者白名单特定域以覆盖此功能? 我们可以通过外部JS包含文件访问父站点(显然,否则这将是一个大敞开的后门)。

1
也影响Salesforce.com用户:https://trailblazer.salesforce.com/issues_view?id=a1p4V000002BRMXQA4 他们提供了一个解决方法,您可以使用命令行标志启动Chrome以禁用此新功能。--disable-features="SuppressDifferentOriginSubframeJSDialogs" - Dave Michener
我想指出:Google Chrome正在运行所谓的“起源试验”,以测试这里突出的行为变化。它被称为“禁用不同起源子框架对话框抑制”。任何关心此行为变化的人都可以注册参加起源试验并提供反馈。 - Peter O.
我阅读了反向起源试验的条款,其中有一个让人有些担忧。它说:“我明白,由于实验性功能在 Chrome 页面加载中使用超过 0.5%(在 14 天期间作为中位数)时将被禁用的限制,我可能需要将此实验性功能的使用限制在我的某些用户子集中。” - Vincent F
4个回答

7
禁用 SuppressDifferentOriginSubframeJSDialogs,以阻止 JavaScript 对话框弹出: 如果您是单个用户(Windows):
  1. 右键单击桌面并创建一个快捷方式
  2. Windows 将弹出一个屏幕,并要求您“输入项目的位置:”...现在将这些值粘贴到文本框中
  3. "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-features=SuppressDifferentOriginSubframeJSDialogs

  4. 点击“下一步”,然后点击“完成”按钮创建快捷方式
  5. 现在您应该会看到桌面上创建了一个 Chrome 快捷方式。关闭所有当前正在运行的 Chrome 实例(如果存在),然后启动快捷方式,您将发现 Js 弹出窗口不再被阻止。
提示: 如果您想将此修复推广到所有合作域用户,则可以考虑使用 域组策略 更新 Chrome 快捷方式值或使用自定义域登录脚本逻辑来实现。

2
我在最新的Chrome GPO模板中找到了一个设置,它创建了一个注册表条目来处理这个问题,并且将相同的注册表条目放置在Edge位置也解决了那里的错误。(至少对于我们昨天遇到的问题有效)。
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge] "SuppressDifferentOriginSubframeDialogs"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "SuppressDifferentOriginSubframeDialogs"=dword:00000000
最新的Edge GPO模板还没有这个设置,但我想这只是时间问题。

1
今天我再次尝试使用Google Chrome版本92.0.4515.131,突然间它又可以用了。有人能确认一下吗?

3
可以,但据此链接https://bugs.chromium.org/p/chromium/issues/detail?id=1065085#c41所述,它仅适用于两周。 - Vincent F
2
另一个更新:在此评论中,项目成员表示弃用已推迟至2022年1月。 - DayDreaming

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接