franzhong 2023-10-25 14:21 采纳率: 100%
浏览 9
已结题

QT加载html文件,未载

QT加载本地的一个html文件,发现js未被载入

<!DOCTYPE html>
<html>
<head>    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Title</title>
    <script type="text/javascript" src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
hello world! 
</body>
<script type="text/javascript"> 
$().ready(function(){
alert("Ready!");//在浏览器上可以输出,在QT上未输出
})
</script>
</html>
m_webView = new QWebEngineView(this);
QString htmlPath = QCoreApplication::applicationDirPath() + "/";
QString htmlFile = htmlPath + "TEST.html";
m_webView->page()->load(QUrl("file:///" + htmlFile));
m_webView->resize(800,600);

测试效果:QT上显示出来了Hello World!,但是Alert没有弹出来!有一条提示 js: Uncaught ReferenceError: $ is not defined
而直接将这个html文件拖在浏览器上,就可以弹出Alert

//QT6.4 MSVC2019

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-25 16:07
    关注

    【以下回答由 GPT 生成】

    问题分析: 问题的根本原因是由于QT中的QWebEngineView控件默认禁用了对远程资源的访问,因此无法加载外部的JavaScript文件。此外,由于QT中的QWebEngineView是基于QtWebEngine模块实现的,而QtWebEngine模块基于Chromium内核,因此需要使用本地文件URL语法来加载本地的HTML文件。

    解决方案: 为了解决这个问题,我们可以采取以下几个步骤:

    1. 确保存在正确的HTML和JavaScript文件。

      • 确保HTML文件和JavaScript文件在正确的目录下,并且文件名正确。
      • 可以在浏览器中直接打开HTML文件,确保JavaScript文件可以正常加载和执行。
    2. 修改QT应用程序的配置以允许访问远程资源。

      • 打开QT应用程序的.pro文件。
      • 在文件中添加以下代码: QT += webenginewidgets
      • 添加完毕后,重新编译和运行QT项目。
    3. 修改加载HTML文件的逻辑。

      • 使用QUrl::fromLocalFile方法将本地文件路径转换为有效的本地文件URL。
      • 修改加载HTML文件的代码如下: cpp m_webView = new QWebEngineView(this); QString htmlPath = QCoreApplication::applicationDirPath() + "/"; QString htmlFile = htmlPath + "TEST.html"; QUrl url = QUrl::fromLocalFile(htmlFile); m_webView->page()->load(url); m_webView->resize(800, 600);
      • 重新编译和运行QT项目,看是否能够正确加载和执行JavaScript文件。

    优化建议: 1. 可以在QT应用程序的日志输出中查看是否有关于加载JavaScript文件的错误信息,以帮助定位问题。

    1. 可以使用QtWebChannel模块来进行JavaScript和C++之间的通信,以实现更复杂的交互逻辑。

    2. 可以尝试使用QWebEngineProfile来定制QT应用程序的Web引擎行为,以满足特定的需求。

    总结: 要解决QT加载本地HTML文件时无法正确载入JavaScript并弹出alert的问题,需要进行一些配置和代码调整。首先,确保QT应用程序配置允许访问远程资源。然后,使用正确的本地文件URL语法加载HTML文件并执行JavaScript。如果问题仍然存在,可以根据优化建议进一步调试和定位问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 qgcomp混合物线性模型分析的代码出现错误:Model aliasing occurred
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'