QWebView - работа с бесконечным циклом JavaScript - PullRequest
0 голосов
/ 20 июля 2010

web_view_crash.py

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?

Редактировать: оба файла являются локальными.

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

sip.delete(page) уничтожит объект страницы, остановив выполнение, затем все, что вам нужно сделать после этого, это удалить ссылку на страницу в Python: del page

Возможно, вы также захотите проверить подклассы WebPage и повторно внедрить shouldInterruptJavaScript(), возможно, убив вашу страницу при запуске.

0 голосов
/ 20 июля 2010

??? Это действительно не имеет никакого смысла. Файл Javascript представляет собой бесконечный цикл. Вы не можете «убить» код страницы с сервера. Это просто невозможно - , особенно , когда браузер зависает с Javascript, привязанным к процессору.

Может быть, этот файл Javascript был предоставлен в качестве примера, но это не имеет значения. Если вы знаете, что у вас есть страница, которая сломана таким образом, вы должны исправить эту страницу.

...