我想编写一个 Qt 应用程序,它使用 Webkit 作为它的 gui 从服务器获取数据并显示它。我让它在 Linux 和 OS X 下运行没有问题,但在 Windows 下 XMLHttpRequest 总是返回状态 0,我不知道为什么。这是我使用的 pyqt 代码:
import sys, os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView()
web.page().settings().setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True)
path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'index.html'))
url = "file://localhost/" + path
web.load(QUrl(url))
web.show()
sys.exit(app.exec_())
这是我用来测试它的html HTML/JS:
<!DOCTYPE html>
<title>TEST</title>
<h1>TEST</h1>
<div id="test"></div>
<script type="text/javascript">
function t(text) { document.getElementById("test").innerHTML = text }
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(this.status != 0)
t(this.responseText)
else
t("Status is 0")
}
xhr.open("GET", "https://jeena.net/")
xhr.send()
</script>
在 Linux 上,它会打开一个带有 WebKit 视图的新窗口,将 html 本地 index.html 文件加载到其中并呈现它,其中显示 TEST 标题。之后,它运行 XMLHttpRequest 代码来获取网站内容,并使用 innerHTML 将其设置到准备好的 div 中。
在 Windows 上,它会加载并显示标题,但是当它运行 xhr 代码时,状态始终为 0,并且无论我做什么,它都不会改变。
据我了解LocalContentCanAccessRemoteUrls
,即使在 Windows 上,xhr 也可以从远程网站获取该内容,知道为什么这不起作用吗?我在我的 Windows 机器和 python v2.7 上使用 Qt 版本 4.9.6。