You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从XMLHttpRequest返回的HTML中提取class为offer的div元素

实现方案

你获取到的request.response是纯文本格式的HTML内容,无法直接调用DOM选择API,需要先将其解析为可操作的DOM结构,再提取目标元素即可,以下是两种可直接使用的实现方式:

  • 原生DOMParser方案(推荐)
    该方法为浏览器原生支持,无额外依赖,适配绝大多数现代浏览器,直接修改你的请求回调逻辑即可:

    document.querySelector('#get_html').addEventListener('click', function () {
        var url = document.querySelector('#url_html');
        var request = new XMLHttpRequest();
        request.open("GET", url.value);
        request.send();
    
        request.onload = function() {
            // 把返回的HTML字符串解析为DOM文档对象
            const domParser = new DOMParser();
            const parsedDoc = domParser.parseFromString(request.response, 'text/html');
            // 提取class属性为offer的div元素
            const targetOfferDiv = parsedDoc.querySelector('div.offer');
            
            // 按需使用提取到的元素:
            // 获取元素完整HTML:targetOfferDiv.outerHTML
            // 获取元素内部内容:targetOfferDiv.innerHTML
            // 也可以直接把元素插入到当前页面的DOM中
            console.log(targetOfferDiv);
        };
    })
    
  • 临时容器解析方案(兼容老旧浏览器)
    如果需要兼容不支持DOMParser的老旧浏览器,可以通过创建临时DOM容器的方式解析HTML:

    request.onload = function() {
        // 创建一个脱离文档流的临时div作为容器
        const tempContainer = document.createElement('div');
        // 注入HTML字符串,浏览器会自动解析为DOM结构
        tempContainer.innerHTML = request.response;
        // 从临时容器中查找目标元素
        const targetOfferDiv = tempContainer.querySelector('div.offer');
        console.log(targetOfferDiv);
    }
    

注意:如果请求的目标页面和你当前运行脚本的页面域名、端口、协议不一致,会触发浏览器跨域限制,需要目标站点配置CORS规则允许你的站点访问,否则请求无法正常拿到返回内容。

内容的提问来源于stack exchange,提问作者user289418

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:33:21