mickyo 2023-02-24 13:06 采纳率: 77.8%
浏览 66
已结题

CHtmlView 加载完成消息获取

我使用 MFC CHtmlView 类视图打开了目标网页,里面有个div如下图,该div内容是通过ajax动态获取的,html源文件是没有内容的。

Navigate2后,OnDocumentComplete 和 OnNavigateComplete2 消息回调时 div 内容还没有显示出来了。若人工检测,完全加载完页面后,再执行函数,采用 IDispatch IHTMLDocument3 IHTMLElementCollection IHTMLElement 等结合,是可以获取到 div 的 innerHTML

请教如何判断目标网页的完全加载,或者准确的说,是判断目标 div 已经ajax动态加载完毕?
或者谁能给段有效的代码,使用 IHTMLElement getAttribute 获取div class属性值

img

  • 写回答

7条回答 默认 最新

  • CodeBytes 2023-02-24 13:19
    关注

    该回答引用ChatGPT

    遇到问题可以回复我

    您可以通过以下几种方式来判断目标 div 是否已经ajax动态加载完毕:

    1、使用JavaScript:您可以在页面加载时通过JavaScript监听目标 div 的加载事件,当该 div 加载完成后触发回调函数,以此来判断目标 div 是否已经加载完成。例如,您可以使用以下代码来监听目标 div 的加载事件:

    var targetDiv = document.querySelector('.blockcontent');
    targetDiv.addEventListener('load', function() {
      // 目标 div 加载完成后的处理逻辑
    });
    
    
    

    2、监听XMLHttpRequest的onreadystatechange事件:如果目标 div 是通过ajax动态获取的,那么可以通过监听XMLHttpRequest对象的onreadystatechange事件来判断目标 div 是否已经加载完成。当XMLHttpRequest对象的readyState属性为4时,表示请求已完成,可以通过XMLHttpRequest对象的responseText属性获取返回的HTML代码,从而判断目标 div 是否已经加载完成。例如,您可以使用以下代码来监听XMLHttpRequest对象的onreadystatechange事件:

    
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4) {
        var html = xhr.responseText;
        // 在返回的HTML代码中查找目标 div,判断其是否已经加载完成
      }
    };
    xhr.open('GET', 'http://example.com/ajax_request', true);
    xhr.send();
    
    

    3、使用jQuery的load方法:如果您的应用中使用了jQuery库,您可以使用jQuery的load方法来加载目标 div,并通过load方法的回调函数来判断目标 div 是否已经加载完成。例如,您可以使用以下代码来加载目标 div 并判断其是否已经加载完成:

    
    $('.blockcontent').load('http://example.com/ajax_request', function() {
      // 目标 div 加载完成后的处理逻辑
    });
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 修改了问题 2月24日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 咨询一下有关于王者荣耀赢藏战绩
  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?