您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
收集console的error数据!
// ==UserScript== // @name CollectMissingSrc // @namespace http://gitbay.net/ // @version 0.1 // @description 收集console的error数据! // @author Emery // @include http://*/* // @include https://*/* // @grant none // ==/UserScript== (function() { 'use strict'; function getMissingSrc(tagMap,resources_list){ var tagName = tagMap.tagName; var tagSrc = tagMap.tagSrc; var results = []; var els = document.getElementsByTagName(tagName) for(var i=0;i<els.length;i++){ var a= els[i]; var src = a[tagSrc]; if( src && src.length >10 ){ if(resources_list[ src]){ continue; } results.push(src); //console.log( '发现加载错误',i, src, a); } } return results; } function collectMissingSrcAsset(){ // 收集已经加载的资源 var resources = performance.getEntriesByType("resource"); var resources_list ={}; for(var i = 0;i < resources.length;i++){ var r =resources[i]; resources_list[ r.name ] = r.initiatorType ; //console.log(i,r.initiatorType ,r.name,r) } var tagsMap = [{'tagName': 'img' , 'tagSrc': 'src'}, {'tagName': 'script' , 'tagSrc': 'src'}, {'tagName': 'link' , 'tagSrc': 'href'}, {'tagName': 'source' , 'tagSrc': 'src'}, {'tagName': 'video' , 'tagSrc': 'src'}, {'tagName': 'xml' , 'tagSrc': 'src'}, {'tagName': 'embed' , 'tagSrc': 'src'} ]; // <source src="test.mp3" type="audio/mpeg"> // <video src="rabbit320.webm" controls> // <xml id="note" src="note.xml"> // <embed src="helloworld.swf"> var resultList=[]; for( var j = 0;j<tagsMap.length ; j++){ var tagMap = tagsMap[j]; var results =getMissingSrc(tagMap,resources_list); if( results.length >0){ resultList = resultList.concat(results); } } return resultList; } function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function saveArrayToFile(){ window.MissingList = collectMissingSrcAsset();//重新计算,因为有可能增加了 var text = window.MissingList.join('\n'); var d = new Date(); var timeStr =d.toLocaleString() var filename= document.title +'-MissingSrc'+timeStr+'.txt'; filename = filename.replace(/\ /g,"-"); // 替换空格 download(filename, text); } window.saveArrayToFile = saveArrayToFile; function main(){ window.MissingList = collectMissingSrcAsset(); if( window.MissingList.length >0 ){ console.log('当前有', window.MissingList.length,'个文件未加载成功'); console.log('详情请输入 window.MissingList '); console.log('如果要下载成txt,请输入 saveArrayToFile()'); }else{ console.log('当前文件加载正常'); } } main(); // Your code here... })();