QWebFrame :: evaluateJavaScript与HTML中的script-tag

时间:2010-05-16 18:03:34

标签: qt pyqt4 qtwebkit

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

我需要知道的是,从文件中读取JQuery和evaluateJavaScript,或者将它作为脚本标记嵌入到窗口小部件中显示的“页面”之间有什么区别吗?

编辑:似乎我至少部分地想到了这一点。 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文件?这只是记录不清,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用Qt Resource System并将html修改为类似

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

并且不要忘记主

中的调用宏Q_INIT_RESOURCE

或使用evaluateJavaScript

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());
}

我想使用资源系统会更好。