innerText自动截断DOM元素内的长文本

时间:2015-05-27 10:42:49

标签: javascript excel-vba dom vbscript internet-explorer-10

我正在尝试通过JavaScript innerText 属性(在excel VBA宏中)访问 td 元素中的内容。它适用于所有情况,除了 td 元素内的文本非常长(大于85982个字符)的情况。

检查innerText提取的文本后,我发现innerText似乎在一定长度后截断文本。请注意,对于文本大小较小的其他情况,这不会发生。

此外,似乎Mozilla的 textContent 属性也有类似的问题。我尝试使用Firefox中的开发人员控制台访问文本的截断部分,用于上述DOM元素,但似乎文本不在提取的内容中(但是没有截断的文本存在 - 就像使用innerText一样)

有谁知道如何绕过这个限制?这些功能有内部限制吗?

这是我的VBA代码,有这个问题:

MyInnerText = objElement.ChildNodes(3).innerText

这是在Firefox控制台中运行的具有相同问题的等效代码:

var t = document.getElementsByName("chapter11")[0].parentNode.children[3].textContent;
t.match("some text that is in the part being truncated.");

对于Firefox,如果我检查元素,这个问题似乎就消失了,然后点击"显示全部3396"节点。在这些节点可见之后,textContent不再截断文本。

请注意我希望能够使用Internet Explorer对象从VBA脚本中提取文本。

1 个答案:

答案 0 :(得分:0)

事实证明问题是由整数溢出引起的。我正在寻找的字符串的索引大于VBA中Integer类型的容量,因此VBA默默地将其设置为零。

至于为什么我无法在FireFox中找到文本的原因,这仍然是一个谜。