2011-07-29 2 views
0

PySide.QtWebKit.QWebPage.shouldInterruptJavaScript() 슬롯을 재정 의하여 JavaScript 인터럽트 요청을 자동으로 무시하고 싶습니다. 내 자신의 시간 초과 타이머 설정이 있고 기본 메시지 대화 상자가 필요하지 않습니다. PySide documentation을 인용PySide가있는 QWebPage에서 shouldInterruptJavaScript를 재정의하십시오.

:

때문에 바이너리 호환성 제약이 기능은 가상 없습니다. 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

이봐, 호레이! 마스터에서 컴파일 된 코드 만 훌륭하게 작동합니다. –

관련 문제