某个网站的网页都是以表格的形式构建的。基本上,每组表都是由脚本构成的。
我在该网站中检查过的任何网页的DOM中大约有80个table
个标签(我在DOM的一个页面中统计了77个表)。一个非常古老的网站。
一些元素子元素(td
)在其自身中包含一些表。
我得出结论,该网站中的网页是由脚本构建的,原因有两个:
1)其中任何一个都不会对网页中的任何表格元素起作用:
document.querySelector("#mySelector").style.display = "none";
document.querySelector(".mySelector").style.display = "none";
document.querySelector(" /* LONG-CSS-PATH-TAKEN-FROM-DEVTOOL (via "Copy CSS path") */ ").style.display = "none";
这种行动通常会输出:
TypeError:document.querySelector(...)为null
当然,所有3个例子在其他网站上都可以正常使用。
2)在DOM的不同部分之前有脚本段。
我的问题包括以下两个问题:
1)如何阻止加载创建某组表的特定脚本? (整个网页的某个部分)?
2)可能还有另一个原因而不是#34;从脚本加载HTML"导致元素不以传统方式被定位?
我从Console运行此脚本。
我还尝试在window.onload
事件处理程序中使用Greasemonkey运行它。
答案 0 :(得分:1)
如果您可以在DOM中看到该元素,则可以查询它。
您所看到的行为的一个可能解释是,在查询之后元素被加载到DOM中。您没有提供足够的线索来提供任何实用的建议,除了找出正在加载的脚本并从那里获取它。
另一种可能的解释是表格在iframe中。查询顶部框架的DOM不会返回其他框架的DOM中的元素。您可能会在DevTools Elements窗格中看到它们,因为它显示了所有DOM,但您必须先获取对正确框架文档的引用,然后才能查询它。
最后但绝对不是最不重要的是一个非常简单的问题...... WAT?那里发生了什么?数百张桌子?没有任何意义,即使按照90年代后期的标准使用表格进行布局也被认为是一个好主意。
你的策略不应该隐藏它们,而应该完全摆脱它们。考虑逃跑。