Domanda

Ho qualche difficoltà con questo, ma fondamentalmente caricare una pagina in un QWebView è possibile ottenere eventi sul contenuto che viene caricato nel processo di rendimento della pagina?

Sto usando Pyside, quindi supponendo che tu abbia già un QWebView come "W"

w.load('http://www.unicorns-are-awesome.com/index.html')

E il contenuto di quell'indice.html sembra:

<html>
    ...
    <head> 
         <script src="something.js">
    </head>
    <body>
         <img src="unicorns.jpg">
    </body>
</html>

QWebView deve scaricare entrambi qualcosa.js e unicorns.jpg - ma finora non sembra essere un modo ovvio per ottenere eventi DownloadRequest per questi download subordinati.

L'unica volta in cui "DownloadRequest" viene emesso da W.Page () è quando si modifica l'URL nel QtWebView, vale a dire ricevere solo aggiornamenti per quello che sarebbe nella barra "posizione".

Come puoi ricevere una notifica per ogni Elemento che una pagina web scarica nel tuo QtWebView?

AGGIORNAMENTO: Implementazione di NetworkAccessManager:

from MainWindow import MainWindow
from PySide.QtGui import QApplication
from PySide.QtCore import QCoreApplication
from PySide.QtWebKit import QWebView, QWebSettings
from PySide.QtNetwork import QNetworkReply

class TransferMonitor(object):

    def __init__(self):
        a = MainWindow._instance # "singleton"
        b = a.findChild(QWebView, "browser")
        nm = b.page().networkAccessManager()
        nm.finished[QNetworkReply].connect( self.dump_url )

    def dump_url(self, reply):
        # This is probably unnecessary, but
        # I wanted to be 100% sure that every get
        # was 'fresh'. 

        QWebSettings.clearMemoryCaches()

        # For now all we really do is just dump URLs 
        # as they're processed. Perhaps later we will intercept.

        print reply.url().toString()
È stato utile?

Soluzione

Dovresti implementare un QnetWorkAccessManager, sovrascrivere CreareQuest () e chiamare QWebPage :: SetNetWorkAccessManager (). Non sono sicuro che ciò sia possibile in Pyside.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top