QWebView - 处理JavaScript无限循环
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_()
infinite_loop.html
<script>
while(true) {
document.write('infinite loop...')}
</script>
我想通过我的Python代码来解决这个问题,不想动到JavaScript。有没有办法可以终止这个JavaScript的运行呢?
补充说明:这两个文件都是在本地的。
2 个回答
0
??? 这真是没道理。这个Javascript文件实际上是一个无限循环。你无法从服务器“杀死”页面的代码。这根本不可能——尤其是当浏览器被卡在运行占用CPU的Javascript时。
也许这个Javascript文件只是作为一个示例提供的,但这并不重要。如果你知道你的页面是这样坏掉的,那你就得修复这个页面。
1
sip.delete(page)
这个命令会把页面对象给删除掉,这样就会停止这个页面的执行。之后你只需要在Python里删除对这个页面的引用,也就是用 del page
。
你可能还想看看如何继承WebPage这个类,并重新实现 shouldInterruptJavaScript()
这个方法,或许可以在页面执行的时候把它给杀掉。