JS NodeType document getElementById tagName ClassName querySelector

本文讨论如何在同页中确保唯一ID,并深入解析getElementById、getElementsByTagName、getElementsByClassName和querySelector及其querySelectorAll的用法,针对前端开发者提供实践指导。

 

 

 document

 

 

 getElementById tagName ClassName querySelector

 

 

 

 同个页面不要出现相同的id

 

 

 

 getElementsByTagName

 

 

 

 

 

 getElementsByClassName

 querySelector ˈkwɪəri

 

 

 

 querySelectorAll

 

 

 

 

 

 

 

我还没照着你说的改,你先看下我的js关联的代码后再决定(function() { var textNodes = []; var fullText = ''; // 递归遍历DOM树,收集文本节点 function traverse(node) { if (node.nodeType === Node.TEXT_NODE) { var text = node.textContent; // 先不 trim,查看原始文本 console.log('发现文本节点:', text); console.log('文本长度:', text.length); if (text.length > 0) { // 记录文本内容和在完整文本中的起始索引 textNodes.push({ text: text, start: fullText.length }); fullText += text; console.log('已收集文本,当前总长度:', fullText.length); } } else if (node.nodeType === Node.ELEMENT_NODE) { var tag = node.tagName.toLowerCase(); console.log('遍历元素节点:', tag); // 跳过脚本、样式等非内容节点 if (tag !== 'script' && tag !== 'style' && tag !== 'noscript') { for (var i = 0; i < node.childNodes.length; i++) { traverse(node.childNodes[i]); } } } } // 修改容器选择逻辑 var container = document.getElementById('content') || document.querySelector('.content') || document.body; console.log('使用的容器:', container); // 添加这行来实际遍历容器 traverse(container); // 处理iframe中的文本(同域) var iframes = document.getElementsByTagName('iframe'); for (var i = 0; i < iframes.length; i++) { try { var iframeDoc = iframes[i].contentDocument || iframes[i].contentWindow.document; traverse(iframeDoc.body); console.log('iframe处理完成'); } catch (e) { console.log("跨域iframe,无法访问内容:" + e.message); } } // 在函数末尾添加调试信息 console.log('文本收集完成,总文本长度:', fullText.length); console.log('收集到的文本节点数:', textNodes.length); // 将结果传递给Android - 也应该添加错误处理 try { // 将结果传递给Android if (window.TextNodeInterface) { window.TextNodeInterface.onTextNodesCollected(fullText, JSON.stringify(textNodes)); console.log('文本节点收集完成'); } else { console.error("未找到TextNodeInterface接口"); } } catch(e) { console.error('传递数据到Android出错:', e); } })();
10-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值