Javascript 使用用户脚本从网页中提取脚本标记

Javascript 使用用户脚本从网页中提取脚本标记,javascript,dom,userscripts,Javascript,Dom,Userscripts,我的userscript有以下代码 var scrpt=document.getElementsByTagName('script') 我包括这一点是为了知道我访问的每个页面的脚本数量 这适用于一些网站,但对于一些网站,我没有得到所有的脚本目前。我在firefox和chrome中都安装了用户脚本,问题是同一个站点的脚本数量在两种浏览器中都不同 例如,当我访问此链接时 我得到的firefox和chrome中的脚本数量分别为:17和:15 但是当我查看页面源代码时,有22个脚本标记 请帮我解决这个问

我的userscript有以下代码

var scrpt=document.getElementsByTagName('script')

我包括这一点是为了知道我访问的每个页面的脚本数量

这适用于一些网站,但对于一些网站,我没有得到所有的脚本目前。我在firefox和chrome中都安装了用户脚本,问题是同一个站点的脚本数量在两种浏览器中都不同

例如,当我访问此链接时

我得到的firefox和chrome中的脚本数量分别为:17和:15

但是当我查看页面源代码时,有22个脚本标记

请帮我解决这个问题。我甚至尝试了
document.scripts
,但仍然得到了相同的结果


我可以知道为什么会发生这种情况吗

您不查看页面源代码,而是检查DOM,对吗?源代码包括18个
标记(对我来说,是手工计数的),但也有其他标记是动态加载的(在控制台中执行
document.getElementsByTagName('script')。length
时得到22个)

那么您的用户脚本(Opera或FF的greasemonkey?)何时执行?onDOMready并非所有脚本都需要可用。在歌剧中,我会在舞台上挂一个柜台


您在ff和chrome中获得的计数可能不同,因为您查看的页面不同。返回给您的html将受到登录状态(cookies)和浏览器字符串的影响。特别是动态加载的脚本在不同浏览器之间可能有所不同。

您可以使用现有的方法来计算页面加载时可用的脚本数,然后使用钩子或计算其他脚本(异步加载)插入的脚本数。然而,考虑到您的自定义处理程序每天都会被触发,挂接到DomainDeInserted会使页面速度非常慢。仅有一个的时间DOM中添加了一些内容


我建议您将计算设置为开始,比如说,比开始时间晚半秒。

脚本不是其标记的内容,脚本标记更像是一条指示浏览器在其src下载和评估文件

脚本标记可以与新的src属性一起添加、删除和重用,更不用说可以使用ajax加载和评估的脚本了


在某种程度上,一个文档只有一个脚本,不管有多少文件是从不同的来源添加的。

也许这些其他脚本标记是稍后创建的。考虑脚本标记生成可以是动态的,并且不同于浏览器到浏览器,从执行到执行。喜欢博客软件可以为列出的每篇文章中的每个“喜欢facebook”按钮创建一个新的脚本标记。我的用户脚本在页面加载时执行是,然后在插入其他脚本时不会触发。您可以钩住一个DOMmanipulation事件来捕获它们。你的脚本如何处理这个数字?你能举一个使用DOM操纵事件捕捉脚本的例子吗