javascript – Firefox的textContent与Chrome的innerText不匹配

由于Firefox没有innerText,我使用textContent来检索文档正文的文本.但是,textContent返回正文中的noscript和script标记内的任何内容(也许还有其他标记,我不完全确定),这意味着textContent看起来与innerText通常返回的内容不同.

在Firefox中是否有与Chrome的innerText函数相同的输出?

解决方法:

编辑

包含过滤器以获取某些元素的内容

它们是两个不同的属性 – 一个在W3C DOM 3 Core中定义,另一个是Microsoft proprietary property,已被广泛复制但没有开放规范.

将两者标准化的最佳方法可能是不使用它们,而是使用DOM行走例程来收集文本节点并创建字符串.对两个(所有)浏览器使用相同的例程.

// Get the text within an element
// Doesn't do any normalising, returns a string
// of text as found.
function getText(element) {
  var text = [];
  var self = arguments.callee;
  var el, els = element.childNodes;
  var excluded = {
    'noscript': 'noscript',
    'script'  : 'script'
  };

  for (var i=0, iLen=els.length; i<iLen; i++) {
    el = els[i];

    // May need to add other node types here
    if ( el.nodeType == 1 && 
       !(el.tagName.toLowerCase() in excluded)) {
      text.push(self(el));

    // If working with XML, add nodeType 4 to get text from CDATA nodes
    } else if (el.nodeType == 3) {

      // Deal with extra whitespace and returns in text here.
      text.push(el.data);
    }
  }
  return text.join('');
}
上一篇:DOM编程案例 —— 登录页面表单验证


下一篇:C#抓取远程Web网页信息的代码