QWebFrame::evaluateJavaScript и скрипт-тег в HTML

Я хочу разработать приложение, использующее QtWebKit и JQuery.

Что мне нужно знать, так это то, есть ли разница между чтением JQuery из файла и его оценкойJavaScript или внедрением его в качестве тега скрипта на «страницу», отображаемую в виджете?

РЕДАКТИРОВАТЬ: Кажется, я понял это хотя бы частично. оценитеJavaScript, по-видимому, будет работать надежно; но если я сделаю

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

or

QUrl("file://")

И я также попытался изменить параметр src сценария на абсолютные пути на жестком диске и на относительный путь с «./» впереди и без него.

Как мне сделать это правильно (помимо системы ресурсов Qt), чтобы заставить тег скрипта работать с локальными файлами js? Это просто плохо документировано, или я что-то упустил?


person CONTRACT SAYS I'M RIGHT    schedule 16.05.2010    source источник


Ответы (1)


Вы можете использовать систему ресурсов Qt и изменить свой html примерно так:

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

и не забудьте макрос вызова Q_INIT_RESOURCE в main

или используя оценочный 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());
}

Я предполагаю, что использование систем ресурсов лучше.

person Rodrigo    schedule 17.08.2011
comment
прочитайте мой вопрос - я специально попросил способ в стороне от системы ресурсов Qt. - person CONTRACT SAYS I'M RIGHT; 20.08.2011