【问题标题】:Electron : Confirm and Alert of a website in a webview doesn't showElectron:Webview中网站的确认和警报不显示
【发布时间】:2017-12-07 04:56:21
【问题描述】:

我的 BrowserWindow 中加载的页面中有一个带有 webview 的电子应用程序。 该网站在某些情况下会发出确认或警报,但电子正在显示它们。有什么方法可以修改这种行为,例如在我在网站页面上注入的代码中?

【问题讨论】:

  • 我这边有一个大错误,应该是 Electron 没有显示它们

标签: javascript webview electron alert


【解决方案1】:

您可以尝试注入如下代码:

window.confirm = function (msg) {
    console.log('always agree:', msg);
    return true;
};

覆盖确认事件。您可以对警报或您喜欢的内容执行相同的操作。

遗憾的是,我认为您无法从 Electron 管理事件: request

更新

修改问题后,你想显示警报和类似的。 所以,你可以关注this 回答:

promptconfirmalert 是阻止脚本执行线程直到用户输入的函数,这就是电子团队不支持它的原因。相反,您可以出于同样的原因使用一些第三方软件包。

这里有一些以异步方式提供此功能的包

https://www.npmjs.com/package/smalltalk

https://www.npmjs.com/package/vex-js

https://www.npmjs.com/package/dialogs

【讨论】:

  • 我的错问题应该是确认或警报,但电子没有显示它们。如果我重新定义确认函数,它会在注入的代码中很好地注册,但这个函数永远不会到达。
  • 不,我不想使用这些弹出窗口,但我在 web 视图中显示的网站在某些情况下会使用它们,但我的应用程序的用户看不到它们,并且网站看起来像崩溃了但是只是等待点击未显示的内容
  • 您只能从 javascript 中劫持它(就像原始答案一样),然后以其他方式打开一个弹出窗口,管理响应。如果你不能在 webview 中修改页面,那可能很难:)
【解决方案2】:

当用户在修改某些数据后想要退出页面时,网站会发出警报。该网站正在使用 document.body 的onbeforeunload 属性。 因此,我正在使用MutationObserver 编写一段代码来侦听此属性的webview 的注入代码并自己重置它,并使用位于override.js 中的Electron Confirm 来警告使用。由于其他问题尚未完成,但它是方式......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2023-03-12
    相关资源
    最近更新 更多