QWebFrame::evaluateJavaScript 与 HTML 中的脚本标签
我想开发一个使用 QtWebKit 和 JQuery 的应用程序。
我需要知道的是,从文件中读取 JQuery 并对其进行评估,或者将其作为脚本标签嵌入到小部件中显示的“页面”中,有什么区别吗?
编辑:看来我至少部分地弄清楚了这一点。显然,evaluateJavaScript 会可靠地工作;但如果我这样做,
baseurl = QUrl.fromLocalFile(
QDir.current().absoluteFilePath("doesntexist.html"));
view.setHtml(
u"""
<html>
<head>
<script type="text/javascript"
src="jquery-1.4.2.js">
</script>
</head>
<body></body>
</html>""", baseurl);
该文件甚至永远不会从磁盘读取(用 inotify 检查)。 初始化的 baseurl
QUrl("file:/")
QUrl(".");
QUrl();
这也会影响使用或
QUrl("file://")
我还尝试将脚本 src 参数更改为硬盘驱动器上的绝对路径,以及前面带或不带“./”的相对路径。
我如何正确地(除了 Qt 资源系统)让脚本标签与本地 js 文件一起使用?这只是记录不足,还是我遗漏了一些东西?
I want to develop an application that uses QtWebKit and JQuery.
What I need to know is, is there any difference between reading JQuery from a file and evaluateJavaScript it, or embedding it as a script tag within the "page" that is displayed within the widget?
EDIT: It seems that I have this figured out at least partially. evaluateJavaScript will apparently work reliably; but if I do
baseurl = QUrl.fromLocalFile(
QDir.current().absoluteFilePath("doesntexist.html"));
view.setHtml(
u"""
<html>
<head>
<script type="text/javascript"
src="jquery-1.4.2.js">
</script>
</head>
<body></body>
</html>""", baseurl);
The file is never even read from disk (checked with inotify). this also affects baseurl being initialized with either
QUrl("file:/")
QUrl(".");
QUrl();
or
QUrl("file://")
And I have also tried to change the script src parameter to absolute paths on the hard drive, and to a relative path with and without "./" in front.
How do I do it right (aside from the Qt Resource System) to get the script tag to work with local js files? Is this just poorly documented, or am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 Qt 资源系统 并将您的 html 修改为类似这样的内容
,然后不要不要忘记main中的调用宏Q_INIT_RESOURCE
或使用evaluateJavaScript
我想使用资源系统更好。
You can use the Qt Resource System and modify your html to something like this
and don't forget the call macro Q_INIT_RESOURCE in main
or using the evaluateJavaScript
I guess using the resource systems is better.