我正在尝试使用 firebase 进行 google 登录,并尝试通过 pywebview 加载页面。
from tkinter import *
import webview as webview
root = Tk()
win_width = root.winfo_screenwidth()
win_height = root.winfo_screenheight()
root.geometry("%dx%d" % (win_width, win_height))
webview.create_window(title='My Window', url='http://localhost:81',confirm_close=True)
webview.start()
root.destroy()
当使用浏览器打开时,它工作正常,但是当使用我的代码打开并单击登录时,它显示以下消息
无法与弹出窗口建立连接。它可能已被浏览器阻止。
解决办法是什么?
此错误消息通常是由于浏览器的弹出窗口阻止程序阻止弹出窗口打开而引起的。要解决此问题,您可以尝试禁用浏览器中的弹出窗口阻止程序或将浏览器配置为允许来自本地主机域的弹出窗口。
另一个解决方案是使用不同的库为您的 webview 创建一个窗口,例如
pywebview
,它允许您创建一个禁用 JavaScript 的窗口。这有助于防止浏览器的安全功能阻止弹出窗口。
您可以尝试在创建窗口之前添加以下几行代码
webview.config.use_native_window = False
webview.config.guest_instance_handler = 'xwalk'
此外,为了使本地主机正常工作,您需要在本地主机上运行应用程序。您可以使用任何本地服务器,例如 XAMPP 或
python -m http.server
命令。
您还可以尝试使用 IP 地址而不是本地主机,看看是否有效。
我以前也遇到过这种情况,原因是 webview 的默认选项不允许弹出窗口。 您可以在创建窗口时添加 new_instance: True,这样就允许 webview 打开新窗口。
webview.create_window(title='My Window',
url='http://localhost:81',confirm_close=True, new_instance=True)
或另一个选项,您可以检查您的浏览器是否阻止弹出窗口,如果是,则允许它们。