我在学习 chrome 插件开发的过程中遇到一个问题,代码如下:
(function(){ var protocol = window.location.protocol; va 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 是不同形式的(就好像一个数组是空的,一个数组包含了值), 如图:

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