0

web_view_crash.py

import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)
view = QWebView()
view.settings().setAttribute(QWebSettings.JavascriptEnabled, True)
view.load(QUrl('infinite_loop.html'))
view.show()
app.exec_()

无限循环.html

<script>
    while(true) {
        document.write('infinite loop...')}
</script>

我想从我的 python 代码中解决这个问题,而不用接触 javascript。我可以以某种方式杀死javascript吗?

编辑:两个文件都是本地的。

4

2 回答 2

1

sip.delete(page)将杀死页面对象,停止执行,然后您所要做的就是在 Python 中删除对页面的引用:del page

您可能还想检查子类化 WebPage 并重新实现shouldInterruptJavaScript(),可能会在执行时杀死您的页面。

于 2011-09-18T10:35:25.760 回答
0

???这真的毫无意义。Javascript 文件一个无限循环。您不能从服务器“杀死”页面代码。这是不可能的——尤其是当浏览器卡在运行受 CPU 限制的 Javascript 时。

也许该 Javascript 文件只是作为示例提供的,但这并不重要。如果您知道您有一个以这种方式损坏的页面,您必须修复该页面。

于 2010-07-20T00:00:18.087 回答