我正在尝试通过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脚本中提取文本。
答案 0 :(得分:0)
事实证明问题是由整数溢出引起的。我正在寻找的字符串的索引大于VBA中Integer类型的容量,因此VBA默默地将其设置为零。
至于为什么我无法在FireFox中找到文本的原因,这仍然是一个谜。