- vite打包的资源放在本地,通过本地服务进行访问,但qmlwebview组件加载html后遇到动态import的js报错link error。
- webview直接通过服务访问这个js也没什么问题,且直接head preload直接预加载好,然后通过webview在访问这个URL就能正常访问了。
Ps:我是运行在平板上的,平板的浏览器直接输入访问这个url没问题!是webview什么安全策略的问题吗?我也设置了javascriptenabled为true啊,被拦截了吗! !
Ps:我是运行在平板上的,平板的浏览器直接输入访问这个url没问题!是webview什么安全策略的问题吗?我也设置了javascriptenabled为true啊,被拦截了吗! !
阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
Qt WebView 在加载 HTML 文件时,可能会遇到动态加载 JS 文件的问题,这是因为 Qt WebView 在加载 HTML 文件时,会将 HTML 文件中的所有资源(包括 JS 文件)加载到内存中,而不是像浏览器那样异步加载。
为了解决这个问题,你可以尝试以下几种方法:
QUrl::fromLocalFile 将 JS 文件的路径转换为 QUrl 对象,然后使用 QWebEngineView::load 方法加载 HTML 文件时,指定 JS 文件的路径。QUrl jsUrl = QUrl::fromLocalFile("path/to/your/js/file.js");
QWebEngineView *webView = new QWebEngineView();
webView->load(QUrl("file:///path/to/your/html/file.html"));
webView->loadJavaScript(jsUrl.toString());
QWebEngineView::runJavaScript 方法异步加载 JS 文件。QWebEngineView *webView = new QWebEngineView();
webView->load(QUrl("file:///path/to/your/html/file.html"));
webView->runJavaScript("import('path/to/your/js/file.js');");
script 标签将 JS 文件异步加载。<script src="path/to/your/js/file.js" defer></script>
QWebEngineView::settings 对象设置 JavaScriptEnabled 属性为 true,以启用 JavaScript 执行。QWebEngineView *webView = new QWebEngineView();
webView->settings()->setAttribute(QWebEngineSettings::JavaScriptEnabled, true);
webView->load(QUrl("file:///path/to/your/html/file.html"));
这些方法可以帮助你解决 Qt WebView 在加载 HTML 文件时遇到的动态加载 JS 文件的问题。