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

6

我正在使用PyQt4和QWebView小部件来查看网页,但似乎我的Javascript存在问题。其他浏览器似乎可以正常运行,因此我想知道是否有任何异常情况发生,并将它们打印到控制台。

我正在使用以下代码。我需要添加什么来实现这个功能?

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

感谢您,安德鲁。
2个回答

17

创建一个 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

10

或者你可以直接设置DeveloperExtrasEnabled选项,这样你就可以右键单击QWebView并选择检查。

from PyQt5.QtWebKit import QWebSettings

QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)

我想知道为什么这个回答没有那么多赞。使用开发者工具调试前端应用程序非常容易...你有我的支持,朋友... - repzero
是的,这相当简单明了。 - Rafael Oliveira
@repzero:可能与这是一个Python问题有关,C++代码就不太有用了。我已经将代码转换为Python。 - Wladimir Palant

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