2010-07-19 55 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