мне нужно будет загружать объекты java-скрипта в QwebKit, когда мое приложение загружается
Я могу использовать setHtml с отформатированным html и строкой java-скрипта, но его очень сложно поддерживать.
Мой вопрос: могу ли я встроить html и java-скрипт в качестве ресурса в Qwebkit?
Также я не уверен, что html и javascript будут доступны для пользователей приложения.
Можно ли встроить html с js в QwebKit
Ответы (1)
Да, ты можешь.
Просто добавьте свой JS/CSS в файл ресурсов (посмотрите документы Qt, если вы не знаете, как это сделать), а затем в своем HTML просто используйте qrc:/file/path/or/alias
.
Например, если я добавлю JQuery в файл ресурсов с псевдонимом /js/jquery
, то для его загрузки я поместил бы это в свой файл HTML:
<script type="text/javascript" src="qrc:/js/jquery"></script>
Загрузка HTML-файла из файла ресурсов кажется более трудоемкой, поскольку я не могу заставить работать QWebKit::setUrl(QUrl("qrc:/resource/path"))
(":/resource/path" у меня тоже не работает). В настоящее время я делаю следующее:
QString readFile (const QString& filename)
{
QFile file(filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&file);
return stream.readAll();
}
return "";
}
...
myWebKitObject->setHtml(readFile("qrc:/html/index"));
Однако создание ссылок на другие HTML-ресурсы может быть проблемой. Кто знает, как с этим бороться, пишите! (Я предполагаю, что вы можете сделать это, переопределив класс сетевого менеджера для перехвата, когда webkit отправляет http-запросы, и если они для qrc:/urls, прочитайте файл из системы ресурсов и ответьте этим, хотя тогда вам нужно управлять типами mime и такие (например, если на ресурсе изображение) сами...)