Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 如何获取网页所有包含/使用文件的URL列表?_Javascript_Jquery - Fatal编程技术网

Javascript 如何获取网页所有包含/使用文件的URL列表?

Javascript 如何获取网页所有包含/使用文件的URL列表?,javascript,jquery,Javascript,Jquery,我需要一种方法来获得一个网站使用,包括或可以使用的所有URL列表。例如背景图像、Javascripts、css、图像等等 Css和javascript在一开始就可以了。我可以通过解析DOM获得图像。但我不知道一种获取所有Javascript文件URL的简单方法。或者,当前未使用但可以通过css加载的反向图像包含方向 有没有办法用jquery或纯javascript获取所有这些媒体的列表?是: var urls= []; for (var i= document.links.length; i--

我需要一种方法来获得一个网站使用,包括或可以使用的所有URL列表。例如背景图像、Javascripts、css、图像等等

Css和javascript在一开始就可以了。我可以通过解析DOM获得图像。但我不知道一种获取所有Javascript文件URL的简单方法。或者,当前未使用但可以通过css加载的反向图像包含方向

有没有办法用jquery或纯javascript获取所有这些媒体的列表?

是:

var urls= [];
for (var i= document.links.length; i-->0;)
    if (document.links[i].hostname===location.hostname)
        urls.push(document.links[i].href);
console.log(urls);
这将使用显示所有链接…

,您可以通过选择以下内容获得页面中包含的所有URL的列表:

$('[src], [href]')
片段:

$(函数(){
var importCss=$('style').text().split('\n').filter(函数(元素、索引、数组){
return(element.indexOf('@import')>-1)| |(element.indexOf('url(')>-1);
}).map(函数(元素、索引、数组){
if(element.indexOf('@import')>-1){
返回'Imported css:'+元素。替换(/([';]|@import)/g';
}
返回“导入的图像:”+元素。替换(/([“;()”)]|背景图像:.*url)/g';
});
var list=$('[src],[href]').map(函数(索引,元素){
返回this.tagName+':'+(this.src | | this.href);
}).get();
console.log(importCss.join(',\n')+'\n'+list.join(',\n'));
});
@import'custom.css';
身体{
背景图像:url(“http://www.w3schools.com/html/pic_mountain.jpg");
}

奇山
我需要一种方法来获得一个网站使用的所有URL的列表,包括或可以使用。例如背景图像(es),Javascripts,css,图像等等

这是一个相当高的要求(为了得到正确的答案)

所有实际加载的资源都可以通过滥用获得。这允许您拦截代表文档发出的任何和所有网络请求。请注意,这是一个新的API。如果您可以接受以下警告,即ServiceWorker仅在第二次访问文档和软件时才被激活,那么这肯定是你想调查的事情

如果ServiceWorker不是一个选项,那么您将不得不删除DOM和

在抓取DOM时,查找(不确定您是否对
感兴趣)。您还必须检查每个DOM元素的
样式
属性,因为
背景图像:url(“”);
(以及其他)可能隐藏在那里

刮取CSSOM时(用于
的内容),请注意,相同来源的策略限制适用,您将无法访问从不同域加载的样式。筛选
CSSImportRule
CSSFontFaceRule
应该是直接的。至于其他样式,您必须遍历
CSSRuleList
并查找值

请注意,URL可能是相对的。从DOM中提取的所有内容都是相对于文档或文档的。从CSSOM中提取的所有内容都是相对于给定样式表的href(中的每个元素都有不同的URL)

但我不知道一种获取所有Javascript文件URL的简单方法

如果“Javascript文件URL”指的不是
,请解释您的意思。如果不实际执行脚本,您将无法识别所有由Javascript构建的URL。即使如此,这也是一场噩梦

或者,当前未使用但可以通过css加载的反向图像包含方向


CSSOM会让你访问这些信息。

但是使用它我只会得到一个所有链接的列表。没有包括图片、css、javascripts。或者有什么我忽略了的吗?这些内容中有多少是用ajax加载的?这取决于用户可以添加到他们网站的扩展Javascript插件。所以我没有确切的数字。但是ajax加载可能是可能的,但我认为应该是罕见的。到目前为止,这是非常好的。但是你知道从css文件中获取css@import指令或背景图像URL的方法吗?@Chris我不得不删除旧注释。抱歉。这是一个短的规则。是的,对于基本标记,你将其放入列表数组变量中,你可以使用它。谢谢你其他Javascript URL可以是document.write语句,在我自己的脚本执行之后:document.write('\x3Cscript type=“text/Javascript”src=“foo.js”>\x3C/script>);我想你是对的:这是一场噩梦。