我正在从HTML页面中获取所有URL链接,并调用一个函数来发送所有URL链接的XHR请求。我想以适当的方式控制台那些通过和失败的请求链接的日志。我在某种程度上得到了我的结果,但对控制台日志/错误的方式不满意。有人可以建议我需要在哪里更正控制台日志吗?
<div id="WebLinks">
<h2>All Links</h2>
<a href="https://jsfiddle.net/">Link 1</a><br>
<a href="https://stackoverflow.com/">Link 2</a><br>
<a href="https://tellus.com">Link 3</a><br>
<a href="https://loudop.com">Link 4</a><br>
<a href="https://www.youtube.com">Link 5</a><br><br>
<input type="button" id="linkChecker" onclick="linkCheck();" value="linkChecker">
</div>
如何改进已通过和失败的控制台日志。还要删除一些控制台错误;
var linkCheck = function() {
var arr = [],
l = document.links;
for (var i = 0; i < l.length; i++) {
arr.push(l[i].href);
console.log(arr[i]);
urlCheck(arr[i]);
}
function urlCheck(arr, callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (callback) {
callback(xhr.status < 400);
}
}
};
xhr.open('HEAD', arr);
xhr.send();
}
urlCheck(arr, function(exists) {
console.log('"%s" exists?', arr, exists);
});
}
JS小提琴
您可以使用mode: "no-cors"
选项通过fetch
API执行此操作:
window.linkCheck = function() {
function urlCheck(link) {
fetch(link, {mode: "no-cors"}).then(
() => console.log(`${link} is valid`),
() => console.log(`${link} is invalid`)
);
}
var arr = [],
l = document.links;
for (var i = 0; i < l.length; i++) {
arr.push(l[i].href);
urlCheck(arr[i]);
}
};
<div id="WebLinks">
<h2>All Links</h2>
<a href="https://jsfiddle.net/">Link 1</a><br>
<a href="https://stackoverflow.com/">Link 2</a><br>
<a href="https://tellus.com">Link 3</a><br>
<a href="https://loudop.com">Link 4</a><br>
<a href="https://www.youtube.com">Link 5</a><br><br>
<input type="button" id="linkChecker" onclick="linkCheck();" value="linkChecker">
</div>