except for the turn page link whose inner text is 'next', 'previous' and other page numbers etc.
// ==UserScript==
// @name Open all links in the new tab WITH exceptions
// @description except for the turn page link whose inner text is 'next', 'previous' and other page numbers etc.
// @include http://*
// @include https://*
// @exclude *.wikipedia.org*
// @exclude *greasyfork.org*
// @exclude *ezgif.com*
// @exclude *armorgames.com*
// @exclude http*://*/#
//
// @author yechenyin, me:) (kliop)
// @version 1.0.0
// @namespace https://greasyfork.org/users/3586-yechenyin
// @grant GM_openInTab
// ==/UserScript==
(function() {
"use strict";
var exception = [/^https:\/\/www\.google\.\w+\/search/, 'https://m.leiphone.com/page/'];
function getAncestorLink(element) {
while (element && element.nodeName != "A") {
element = element.parentNode;
}
if (element && element.nodeName && element.nodeName === "A" && element.href && element.href.indexOf('http') === 0)
return element;
}
String.prototype.matched = function(strings) {
for (var i = 0; i < strings.length; i++) {
if (typeof strings[i] == 'string' && this.indexOf(strings[i]) === 0)
return true;
else if (strings[i] instanceof RegExp && strings[i].test(this))
return true;
}
return false;
};
if (location.href.indexOf('https://tech.sina.cn') === 0) {
var setLinkAction = function(node) {
if (node && !node.hasAttribute('setted') && node.nodeName && node.nodeName === "A" && node.href && node.href.indexOf('http') === 0) {
node.setAttribute('setted', '');
node.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
if (this && this.href && !this.href.matched(exception) && !/^(\d+|Next|Prev|>|<|下一页|上一页|下一頁|上一頁|回首頁|次へ|前へ)$/.test(this.innerText)) {
console.log(this, e.target);
window.open(this.href);
} else {
location.href = this.href;
}
});
}
};
for (var i = 0; i < document.getElementsByTagName("A").length; i++) {
setLinkAction(document.getElementsByTagName("A")[i]);
}
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if (MutationObserver) {
var observer = new MutationObserver(function(records) {
records.map(function(record) {
setLinkAction(record.target);
for (var i = 0; i < record.target.getElementsByTagName("A").length; i++) {
setLinkAction(record.target.getElementsByTagName("A")[i]);
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
} else {
document.addEventListener('click', function(e) {
var link = getAncestorLink(e.target);
console.log(link.innerText);
if (link && link.href && !link.href.matched(exception) && link.innerText && !/^(\d+|Next|Next >|page|Page|Sort|Filter|Prev|< Prev|Last|Random|1|5|10|[>|]|[|<]|>|<|>>|<<|下一页|上一页|下一|上一|首|次へ|前へ)$/.test(link.innerText))
link.target = '_blank';
});
}
})();