2011-07-29 44 views
0

我想重寫PySide.QtWebKit.QWebPage.shouldInterruptJavaScript()插槽以靜默地忽略JavaScript中斷請求。我有我自己的超時定時器設置,我不需要默認消息對話框。使用PySide替換QWebPage中的shouldInterruptJavaScript

引用PySide documentation

由於二進制兼容性的限制,這個函數不是虛擬的。如果您想在PySide.QtWebKit.QWebPage子類中提供您自己的實現,請改爲在您的子類中重新實現QWebPage.shouldInterruptJavaScript()插槽。 QtWebKit將動態檢測插槽並調用它。

這是我寫的一個示例代碼,但我的shouldInterruptJavaScript()方法永遠不會被調用。我看到PhantomJS中使用的相同代碼以及網頁瀏覽開源項目。

import sys 
from PySide import QtCore 
from PySide.QtGui import QApplication 
from PySide.QtWebKit import QWebPage 

class QWebPageHeadless(QWebPage): 
    # FIXME: This is not working, the slot is not overriden! 
    @QtCore.Slot() 
    def shouldInterruptJavaScript(self): 
     print "Interrupt javascript request ignored..." 
     return False 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    page = QWebPageHeadless() 
    page.mainFrame().setHtml('<script>while(1);</script>') 
    sys.exit(app.exec_()) 

我有Python 2.7.1,PySide 1.0.2,Qt 4.7.2。現在我正在構建最新的PySide,以便測試它,但在最近的發行說明或錯誤報告中找不到有關shouldInterruptJavaScript的任何內容。

有什麼特別的,我應該如何在我的子類中重新實現shouldInterruptJavaScript?

+0

它與PySide 1.0.5相同...... –

+0

我碰到了與PyQt完全相同的問題。你有沒有設法找到這個解決方案? – brianz

回答

0

這現在已經修復在PySide git master版本1.0.6之後。

+0

嘿,時髦!只需編譯來自主服務器的代碼,它工作的很好。 –