我想重寫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?
它與PySide 1.0.5相同...... –
我碰到了與PyQt完全相同的問題。你有沒有設法找到這個解決方案? – brianz