QWebView 不加载外部资源

Posted

技术标签:

【中文标题】QWebView 不加载外部资源【英文标题】:QWebView not loading external resources 【发布时间】:2010-02-19 04:02:16 【问题描述】:

我正在开发一个使用 Qt 和 PyQt4 的信息亭网络浏览器。 QWebView 似乎工作得很好,除了一个怪癖。

如果由于某种原因无法加载 URL,我想将用户重定向到自定义错误页面。我已经使用 loadFinished() 信号来检查结果,并在必要时使用 QWebView.load() 将 URL 更改为自定义页面。但是,我尝试在此处加载的任何页面都无法提取 CSS 或图像等外部资源。

使用 QWebView.load() 设置启动时的初始页面似乎可以正常工作,单击自定义错误页面上的任何链接都会导致目标页面加载正常。只是错误页面不起作用。

我真的不知道下一步该去哪里。我已经包含了一个应用程序的源代码,它将复制下面的问题。它将 URL 作为命令行参数 - 有效的 URL 将正确显示,错误的 URL(例如 DNS 解析失败)将重定向到 Google,但缺少徽标。

import sys from PyQt4 import QtGui, QtCore, QtWebKit

class MyWebView(QtWebKit.QWebView):
 def __init__(self, parent=None):
  QtWebKit.QWebView.__init__(self, parent)
  self.resize(800, 600)
  self.load(QtCore.QUrl(sys.argv[1]))
  self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.checkLoadResult)

 def checkLoadResult(self, result):
  if (result == False):
   self.load(QtCore.QUrl('http://google.com'))

app = QtGui.QApplication(sys.argv)
main = MyWebView()
main.show()
sys.exit(app.exec_())

如果有人能提供一些建议,将不胜感激。

【问题讨论】:

【参考方案1】:

不知道为什么这不起作用,但类似

 def checkLoadResult(self, result):
  if (result == False):
    self.page().mainFrame().sethtml ( "<html><head><h1>Not Found</h1></head>\
     <body><p> Search at  <a href='http://google.com'> google </a>\
     </p></body> </html>")

确实如此。

【讨论】:

以上是关于QWebView 不加载外部资源的主要内容,如果未能解决你的问题,请参考以下文章

如何使 QWebView/QWebPage 默认为衬线字体?

JWPlayer 在 Qt5 QWebView 中不可见

qwebview怎样调整加载的网页的大小

PyQt5 QWebview 刷新问题

QWebView 获取内容类型

在 QWebView 中设置文本输入焦点