【问题标题】:QWebFrame::evaluateJavaScript vs. script-tag in HTMLQWebFrame::evaluateJavaScript 与 HTML 中的脚本标签
【发布时间】:2010-05-16 18:03:33
【问题描述】:

我想开发一个使用 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 文件一起使用?这只是记录不佳,还是我遗漏了什么?

【问题讨论】:

    标签: qt pyqt4 qtwebkit


    【解决方案1】:

    您可以使用Qt Resource System 并将您的 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());
    }
    

    我想使用资源系统更好。

    【讨论】:

    • 阅读我的问题——我专门询问了一种“除了 Qt 资源系统之外”的方法。
    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多