Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载时处理DOM元素_Javascript_Greasemonkey - Fatal编程技术网

Javascript 在页面加载时处理DOM元素

Javascript 在页面加载时处理DOM元素,javascript,greasemonkey,Javascript,Greasemonkey,我正在寻找一种方法,将一段普通javascript放在标题中,并让它钩住页面加载,以便在加载每个标记或元素时可以查看它,测试特定的名称、id或类,如果它满足要求,则执行一些操作。或者,让它在DOM使用下载页面的每个新块进行更新后启动。同时,页面当然会继续加载,但我愿意进行调试以找出任何警告和问题 如果浏览器为我进行过滤,太棒了,否则每次我都必须测试元素类型和名称,我知道在最坏的情况下这会减慢页面呈现速度。我主要关心的是Firefox,因为我希望创建Greasemonkey脚本,但跨平台将非常好

我正在寻找一种方法,将一段普通javascript放在标题中,并让它钩住页面加载,以便在加载每个标记或元素时可以查看它,测试特定的名称、id或类,如果它满足要求,则执行一些操作。或者,让它在DOM使用下载页面的每个新块进行更新后启动。同时,页面当然会继续加载,但我愿意进行调试以找出任何警告和问题

如果浏览器为我进行过滤,太棒了,否则每次我都必须测试元素类型和名称,我知道在最坏的情况下这会减慢页面呈现速度。我主要关心的是Firefox,因为我希望创建Greasemonkey脚本,但跨平台将非常好


这样做的原因是为了避免加载错误样式的页面,直到最后,然后让它跳转到新样式。我认为,许多在DOM完成之前不可用的其他站点也可以从早期绑定的javascript中获益。

您需要挂接到域名插入事件中。此事件冒泡,允许您通过在文档级别注册事件来监视整个文档


由于这只在现代浏览器上受支持,您可能还必须运行一个间隔计时器来定期检查新的DOM元素。您应该小心,这里的代码不会太低效。您可能想假设,如果上次检查时有15个元素,那么您只需要从第16个元素开始检查(在document.getElementsByTagName(“*”)搜索或其他内容中)。

使用Greasemonkey和Firefox,您无法捕获一些第一个元素,并且无法停止元素,例如
,从加载或解析(不停止整个页面加载)

最好的方法是在加载元素后立即删除该元素,或者用以后的代码覆盖其效果

您可以了解这种方法——能够(大部分)在DOM元素进入时捕获它们

然而,“为了避免加载错误样式的页面,直到最后,然后让它跳转到新样式”,一种简单得多且不闪烁的方法是使用来覆盖有问题的样式。时尚,比Greasemonkey更快、更容易,并且在页面加载时几乎可以影响页面。请记住,一个时髦的脚本是一个可以接受的使用
的地方!重要的
关键字


最后,对于外部加载的样式和脚本,您可以轻松地将其替换为。

GM仅在加载DOM后才开始工作。所以我的意思是,这是不可能的,通用汽车所做的一切都是在*之后,而不是在两者都不带负荷之前。这更多地取决于用户连接、浏览器配置以及页面的重量。因此,除非您正在修改的页面非常繁重,而且如果修改也很繁重,那么它通常不会被注意到。只有在旧版本中才是如此,现在有一条语句允许在加载head元素后立即开始执行。