话不多说直接上代码[狗头]
function getitle(path) {
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
xhr.open("get", path);
xhr.send();
xhr.onload = function(ms) {
if (xhr.status == 200) {
var contenx = xhr.responseText;
var star = contenx.indexOf('<title>') 7;
var end = contenx.indexOf('</title>');
resolve(contenx.substring(star, end));
}
}
})
}
这里使用了Promise,可以在async中使用await处理异步问题;
接下来一个例子[左上]: 获取多个a标签,并获取该Link的title内容后拼接为新的a标签,然后保存为txt;也就是这种格式: <a href="" alt="">xxx</a>
function save2text(data, filename) { //这个函数是保存为txt格式
if (!data) {
console.error('Console.save: No data')
return;
}
if (!filename) filename = 'linka.txt'
if (typeof data === "object") {
data = JSON.stringify(data, undefined, 4)
}
var blob = new Blob([data], {
type: 'text/plain;charset=utf-8'
}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a')
a.download = filename
a.href = window.URL.createObjectURL(blob)
a.dataset.downloadurl = ['text/plain', a.download, a.href].join(':')
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
a.dispatchEvent(e)
}
function getitle(path) { //这个是获取url的title
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest();
xhr.open("get", path);
xhr.send();
xhr.onload = function(ms) {
if (xhr.status == 200) {
var contenx = xhr.responseText;
var star = contenx.indexOf('<title>') 7;
var end = contenx.indexOf('</title>');
resolve(contenx.substring(star, end));
}
}
})
}
var tems = '';
var aa = document.querySelectorAll("#content a"); //获得a元素
Promise.all(Array.prototype.map.call(aa, async (item, index) => { //执行同步Promise队列
var ss = await getitle(item.href);
tems = '<a href="' item.href '" alt="' ss '">' ss '</a>\n\r';
})).then(() => {
console.log('构造成功,正在导出文件...');
save2text(tems);
});
以上就是实现过程; 当然这可以天马行空[思考],或者你可以直接保存title等等; 以上代码是我用来解析站点sitemap的所有Link并保存,方便我进行外链布置[看]
--文章来源于本人个人站点,同为原创作者,转载需注明出处: