gpt4 book ai didi

python - 为什么 QWebView.loadFinished 在某些网站上被多次调用,例如YouTube?

转载 作者:太空狗 更新时间:2023-10-30 00:57:21 26 4
gpt4 key购买 nike

根据文档,loadFinished 仅应在所有页面元素完成加载后发出。这应该意味着它只会被调用一次,但是我注意到在一些像 youtube.com 这样的网站上,它被调用了两次?有没有其他方法可以绕过这个错误,或者检测 page.load 事件的最可靠方法是什么?

这是测试代码:

import sys
from PyQt4 import QtCore, QtGui, QtWebKit
from PyQt4.QtCore import QUrl
from PyQt4.QtGui import QApplication

def onDone(val):
print "Done ...",val

def onStart():
print "Started..."

app = QApplication(sys.argv)
ui = QtWebKit.QWebView()
ui.loadStarted.connect(onStart)
ui.loadFinished.connect(onDone)

ui.load(QUrl("http://www.youtube.com"))
ui.showMaximized()
sys.exit(app.exec_())

输出:

Started...
Done ... True
Started...
Done ... True

编辑:有一个几乎相同的 question但它已有 2 年以上的历史,但仍未得到答复。

最佳答案

load* 信号为每个加载的帧触发一次。

如果只捕获第一组信号,连接到主机的相应信号:

ui.page().mainFrame().loadStarted.connect(onStart)
ui.page().mainFrame().loadFinished.connect(onDone)

您可以通过连接到 frameCreated 来验证是否正在加载其他框架。信号,主框架加载后创建的每个 后续 帧都会触发一次:

def onFrame(val):
print 'Frame Created:', val.frameName()

ui.page().frameCreated.connect(onFrame)

关于python - 为什么 QWebView.loadFinished 在某些网站上被多次调用,例如YouTube?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8775152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com