Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QWebView:link&x27;无法使用特定页面(javascript?)_Qt_Webkit_Pyqt_Qtwebkit_Qwebview - Fatal编程技术网

Qt QWebView:link&x27;无法使用特定页面(javascript?)

Qt QWebView:link&x27;无法使用特定页面(javascript?),qt,webkit,pyqt,qtwebkit,qwebview,Qt,Webkit,Pyqt,Qtwebkit,Qwebview,我正在尝试使用QWebView在应用程序的新选项卡中打开单击的链接。即使我将插槽绑定到单击的链接信号,在某个页面(DuckDuckGo)上,该信号永远不会发出 考虑以下(PyQt)示例: 注意:我将linkDelegationPolicy正确设置为DelegateAllLinks 现在,当执行类似于python example.py的操作时http://www.stackoverflow.com/然后单击一个链接,它将被打印到标准输出,而不是像应该的那样打开 但是,当通过python examp

我正在尝试使用QWebView在应用程序的新选项卡中打开单击的链接。即使我将插槽绑定到单击的
链接
信号,在某个页面(DuckDuckGo)上,该信号永远不会发出

考虑以下(PyQt)示例:

注意:我将
linkDelegationPolicy
正确设置为
DelegateAllLinks

现在,当执行类似于
python example.py的操作时http://www.stackoverflow.com/
然后单击一个链接,它将被打印到标准输出,而不是像应该的那样打开

但是,当通过
python example.py执行相同操作时http://www.duckduckgo.com/?q=foo
然后单击其中一个结果,结果将被简单加载,而我不会得到
linkClicked
信号

我猜他们会通过Javascript动态加载打开的页面


尽管没有收到信号,我是否还有办法强制在新选项卡中打开此文件?

您的猜测是正确的。当网页使用Javascript进行导航时,您将不会收到信号

这本书中有一个注释

编辑


我忘了补充一点,您可以尝试将javascript注入页面,该页面将用于与主应用程序通信。如果您想处理一小部分站点,这可能是一个很好的解决方案。这将是一个困难的任务,如果你需要一个通用的解决方案,但在每一个可能的网页工作。web开发人员发明了多种页面导航方式,您可能需要为他们中的每一个人定制javascript,并找到在任何给定页面应用哪种解决方案的方法。

可能重复@M4rtini在这个问题上,提问者不知道
linkClicked
。我的问题是-如我的示例所示-
linkClicked
在应该发出时不会发出。这是两件完全不同的事情。(虽然我的最后一句提到了“新标签”,因为这是我对这个信号的使用案例,但我会澄清这一点)
#!/usr/bin/python

import sys

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView, QWebPage

app = QApplication(sys.argv)
wv = QWebView()
wv.load(QUrl.fromUserInput(sys.argv[1]))
wv.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
wv.page().linkClicked.connect(lambda url: print("Clicked: " + url.toString()))
wv.show()
app.exec_()