我在学习 chrome 插件开发的过程中遇到一个问题,代码如下:
(function(){
var protocol = window.location.protocol;
var host = window.location.host;
var href = window.location.href;
var source = document.getElementsByTagName('html')[0].innerHTML;
var target_list = [];
var js_result = [];
var source_href = source.match(/href=['"].*?['"]/g);
var source_src = source.match(/src=['"].*?['"]/g);
var script_src = source.match(/<script [^><]*?src=['"].*?['"]/g);
if(source_href){
for(var i=0;i<source_href.length;i++){
var u = deal_url(source_href[i].substring(6,source_href[i].length-1));
if(u){
target_list.push(u);
}
}
}
if(source_src){
//var js_result = [];
for(var i=0;i<source_src.length;i++){
var u = deal_url(source_src[i].substring(5,source_src[i].length-1));
if(u){
target_list.push(u);
var xhr = new XMLHttpRequest();
xhr.open("GET", u, true);
xhr.send();
xhr.onreadystatechange = function() {
var src = this.responseText;
var script_url = src.match(/( https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g);
if(script_url){
for(var t=0;t<script_url.length;t++){
var y = script_url[t];
if(y){
js_result.push(y);
}
}
}
}
}
}
}
console.log(js_result)
console.log(target_list)
问题是: console 打印出来的 js_result 和 target_list 是不同形式的(就好像一个数组是空的,一个数组包含了值), 如图:

点开空的那个▶️, 就能看到结果,但是没有直接显示出来
