使用Python 3和PyQT,我构建了一个简单的程序来运行特定的网络聊天。
此网站使用桌面通知,当在外部浏览器中运行时,它会自动要求用户提供通知授权。
在QWebView内部,即使我点击明确请求权限的按钮,也不会显示浏览器授予确认对话框。
其他信息:我可以在控制台中看到,在启用QWebSettings.DeveloperExtrasEnabled
的同时,Notification
对象具有default
权限(其中没有{{1}} t允许显示通知。)
有没有办法在QWebView上启用通知?或者至少让它显示授权确认对话框?
答案 0 :(得分:3)
WebKit有一个插件系统,有点模糊,但是QupZilla的人制作了一个插件来获取与QWebView一起使用的通知。
QupZilla plugins project中有他们的源代码。只需使用项目中提供的简单步骤进行编译和安装即可完成:现在您的webkit将能够显示通知。
但默认情况下,您的应用无法使用它们。
只有当网页请求通知时,您的应用才能使用。您的应用无法强制使用它。
一个简单的样本:
class Wrapper(QWebView):
def __init__(self, window):
QWebView.__init__(self)
# Other stuff here, like load URL, etc
self.page().featurePermissionRequested.connect(self.permissionRequested)
def permissionRequested(self, frame, feature):
self.page().setFeaturePermission(frame, feature, QWebPage.PermissionGrantedByUser)
这将捕获请求启用通知的JavaScript权限。
我找到QupZilla插件之前的第一个解决方案是使用qtwebkit-bridge
,所以我没有使用HTML5通知,而是在页面中注入JavaScript来捕获通知调用,然后使用本机系统通知