Greasy Fork

Greasy Fork is available in English.

dm1080直接跳转

转换编号为直达链接,并不知道站长知道了这东西会不会做出什么应对措施.

当前为 2019-04-08 提交的版本,查看 最新版本

// ==UserScript==
// @name         dm1080直接跳转
// @namespace    http://tampermonkey.net/
// @version      0.0.0.0.0.0.4
// @description   转换编号为直达链接,并不知道站长知道了这东西会不会做出什么应对措施.
// @homepage		http://greasyfork.icu/zh-CN/scripts/29313-dm1080%E7%9B%B4%E6%8E%A5%E8%B7%B3%E8%BD%AC
// @author       You
// @match        https://dm1080p.com/archives/*
// @match        https://52kbd.com/archives/*
// @grant        none
// ==/UserScript==


var urlRegex = /[0-9A-Z]{7}(?=-| )/g; //正则,不区分大小写,匹配七位大写编码
//获取id名为main下entry-content类中的所有span元素
var sp=document.getElementById('main').getElementsByClassName('entry-content')[0].getElementsByTagName('span')
//var ss=document.getElementById('main').getElementsByTagName('p')

//递归函数,实现遍历同一个span元素中的多个编码匹配
//span:元素父节点,txt:innerHTML文本
function nam(span,txt) {
	var rex=txt.match(urlRegex)
	if (rex) {//如果正则匹配,不管多少,先处理再说
		var q=txt.indexOf(rex[0]) //最初匹配的位置
		var qtxt=txt.substring(0,q) //赋值匹配位置之前的所有文字
		var htxt=txt.substring(q+7) //赋值匹配位置之后的所有文字
		
		span.appendChild(document.createTextNode(qtxt)) //先在节点中插入最初的文字
		//创建超链接节点
		var elmLink = document.createElement("a");
		elmLink.href='https://zzzpan.com/?/file/view-'+rex[0]+'.html';
		elmLink.target="_blank";
		elmLink.innerText=rex[0]
		//并追加到父结点中
		span.appendChild(elmLink);
		//递归余下的文本
		nam(span,htxt)
	} else {
		//如果余下的文本中没有匹配,则直接追加
		span.appendChild(document.createTextNode(txt))
	}
}



for (var i = 0; i <sp.length; i++) {
	//var sp=ss[2].getElementsByTagName('span')
	var iH=sp[i].innerHTML //文本
	if (iH.match(urlRegex)) {
		//如果匹配成功,则先清除innerHTML
		sp[i].innerHTML=''
		nam(sp[i],iH)
	}
}