将 QWebView 中的 Javascript 异常打印到控制台

Posted

技术标签:

【中文标题】将 QWebView 中的 Javascript 异常打印到控制台【英文标题】:Print Javascript Exceptions In A QWebView To The Console 【发布时间】:2011-04-26 15:42:52 【问题描述】:

我正在使用 PyQt4 和 QWebView 小部件来查看网页,但我的 javascript 似乎有问题。其他浏览器似乎运行正常,所以我想通过将它们打印到控制台来了解是否发生任何异常。

我正在使用的代码如下。我需要添加什么才能做到这一点?

from PyQt4 import QtGui, QtWebKit
browser = QtWebKit.QWebView()
browser.load(QtCore.QUrl("http://myurl"))
browser.show()

谢谢, 安德鲁

【问题讨论】:

【参考方案1】:

创建QWebPage的子类并定义方法javaScriptConsoleMessage()

import sys
from PyQt4 import QtCore, QtGui, QtWebKit

class WebPage(QtWebKit.QWebPage):
    def javaScriptConsoleMessage(self, msg, line, source):
        print '%s line %d: %s' % (source, line, msg)

url = 'http://localhost/test.html'
app = QtGui.QApplication([])
browser = QtWebKit.QWebView()
page = WebPage()
browser.setPage(page)
browser.load(QtCore.QUrl(url))
browser.show()
sys.exit(app.exec_())

样本输出:

% python qweb.py
http://localhost/test.html line 9: SyntaxError: Parse error

【讨论】:

【参考方案2】:

或者你可以只添加 DeveloperExtrasEnabled,右键单击 QWebView 并选择 Inspect。

QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);

【讨论】:

我想知道为什么这个答案没有这么多的赞成票..使用开发者工具来调试您的前端应用程序非常容易...您有我的投票朋友....跨度> 是的,它非常简单直接。

以上是关于将 QWebView 中的 Javascript 异常打印到控制台的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 QWebView 中从 JavaScript 调用 C++ 函数?

Qt 4.6 将对象和子对象添加到 QWebView 窗口对象(C++ 和 Javascript)

QtWebKit c++ 连接:无法将 QWebView 转换为 SOCKET

初始评估JavaScript()调用后的PyQt4 QWebview错误

QWebView 类是不是在 Qt 5.0.0 中工作?

如何从 PyQT 调用 javascript 函数