2010-07-19 51 views
0

web_view_crash.pyQWebView - 处理JavaScript的无限循环

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吗?

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

回答

1

sip.delete(page)将杀死页面对象,停止执行,那么所有你以后要做的就是删除在Python的参考页:del page

你可能也想看看子类的网页,并重新执行shouldInterruptJavaScript(),执行时可能会导致您的页面被毁坏。

0

???这真的没有意义。 Javascript文件的一个无限循环。你不能从服务器上“杀死”页面代码。这是不可能的 - 尤其是当浏览器卡住运行CPU绑定的Javascript。

也许JavaScript文件只是作为例子提供,但它并不重要。如果您知道您的网页已被破解,您必须修复该页面。

+0

我正在运行本地JavaScript。这里没有服务器。 我试过升级我的PyQt。在我这样做后,我得到一个弹出消息,说:“这个脚本似乎有问题,你想终止它吗?”这表明有一种方法可以停止执行。但如果我点击是,什么也没有发生...... 铬似乎处理这很好。它一直尝试在一个选项卡中加载页面,但浏览器不会无响应。我想在我的GUI应用程序中做类似的事情。我只是在这里寻找解决方法。 – 2010-07-20 00:41:18

+0

你最近在看什么页面?如果它是通过浏览器,那么有一台服务器,不管它是否是本地的。你的Python代码绝对不可能介入。 – Pointy 2010-07-20 03:04:07