选择从脚本

时间:2017-09-01 16:04:01

标签: javascript html css dom null

某个网站的网页都是以表格的形式构建的。基本上,每组表都是由脚本构成的。

我在该网站中检查过的任何网页的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)如何阻止加载创建某组表的特定脚本? (整个网页的某个部分)?

  • 我问这个是因为它似乎是在这个奇怪的布局中隐藏一些元素的唯一方法,因为传统上瞄准它们(ID,Class,CSS-PATH)会产生上述错误。

2)可能还有另一个原因而不是#34;从脚本加载HTML"导致元素不以传统方式被定位?

说明:

  1. 我从Console运行此脚本。

  2. 我还尝试在window.onload事件处理程序中使用Greasemonkey运行它。

1 个答案:

答案 0 :(得分:1)

如果您可以在DOM中看到该元素,则可以查询它。

您所看到的行为的一个可能解释是,在查询之后元素被加载到DOM中。您没有提供足够的线索来提供任何实用的建议,除了找出正在加载的脚本并从那里获取它。

另一种可能的解释是表格在iframe中。查询顶部框架的DOM不会返回其他框架的DOM中的元素。您可能会在DevTools Elements窗格中看到它们,因为它显示了所有DOM,但您必须先获取对正确框架文档的引用,然后才能查询它。

最后但绝对不是最不重要的是一个非常简单的问题...... WAT?那里发生了什么?数百张桌子?没有任何意义,即使按照90年代后期的标准使用表格进行布局也被认为是一个好主意。

你的策略不应该隐藏它们,而应该完全摆脱它们。考虑逃跑。