2

我想开发一个使用 QtWebKit 和 JQuery 的应用程序。

我需要知道的是,从文件中读取 JQuery 并评估 JavaScript 或将其作为脚本标签嵌入到小部件中显示的“页面”中是否有任何区别?

编辑:看来我至少部分地弄清楚了这一点。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 文件一起使用?这只是记录不佳,还是我遗漏了什么?

4

1 回答 1

0

您可以使用Qt 资源系统并将您的 html 修改为类似这样的内容

<script type="text/javascript" 
      src=":/jquery-1.4.2.js">

并且不要忘记 main 中的调用宏 Q_INIT_RESOURCE

或使用评估JavaScript

connect(view, SIGNAL(loadFinished(bool)), this, SLOT(loadJQuery()));

...

void MainWindow::loadJQuery()
{
  QFile file("jquery-1.4.2.js");
  file.open(QFile::ReadOnly);
  view->page()->mainFrame()->evaluateJavaScript(file.readAll());
}

我想使用资源系统更好。

于 2011-08-17T04:42:44.920 回答