replace embed iframe, object with anchor link.
当前为
// ==UserScript==
// @name No Embed Youtube
// @description replace embed iframe, object with anchor link.
// @namespace eight04.blogspot.com
// @include http*
// @exclude http://www.youtube.com/*
// @exclude https://www.youtube.com/*
// @version 1.3.0
// @grant none
// ==/UserScript==
"use strict";
var xpath = "//iframe[contains(@src,'youtube.com/embed/') and not(ancestor::*[@id='YTLT-player'])]|" +
"//iframe[contains(@src,'youtube.com/v/') and not(ancestor::*[@id='YTLT-player'])]|" +
"//object[./param[contains(@value,'youtube.com/v/')] and not(ancestor::*[@id='YTLT-player'])]|" +
"//embed[contains(@src,'youtube.com/v/') and not(ancestor::object) and not(ancestor::*[@id='YTLT-player'])]";
var unEmbed = function(node){
var result = document.evaluate(
xpath, node, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var element = null;
var i = 0, j;
while(element = result.snapshotItem(i++)){
// iframe or embed
var url = element.src;
// object
if(!url){
for(j = 0; j < element.childNodes.length; j++){
var pa = element.childNodes[j];
if(pa.nodeName == "PARAM" && pa.getAttribute("name") == "movie"){
url = pa.getAttribute("value");
break;
}
}
}
if(!url){
continue;
}
var id = url.match(/(embed|v)\/(.+?)(\?|&|$)/)[2];
var a = document.createElement("a");
var pageUrl = "http://www.youtube.com/watch?v=" + id;
a.appendChild(document.createTextNode(pageUrl));
a.setAttribute("href", pageUrl.replace("http:", ""));
a.setAttribute("target", "_blank");
a.className = "unembed";
element.parentNode.replaceChild(a, element);
}
};
unEmbed(document.documentElement);
var thread = function(){
var data = [],
maxLoop = 50,
pos = 0,
loopCount = 0,
started = false;
var worker = function(){
for (loopCount = 0; pos < data.length && loopCount < maxLoop; pos++, loopCount++) {
unEmbed(data[pos]);
}
};
var start = function(){
if (started) return;
started = true;
worker();
if (pos < data.length) {
loopCount = 0;
setTimeout(worker, 16);
} else {
started = false;
data = [];
pos = 0;
}
};
var queue = function(node){
data.push(node);
};
return {
start: start,
queue: queue
};
}();
var observer = function(){
// Observer
new MutationObserver(function(mutations){
var i, j, m;
for(i = 0; i < mutations.length; i++){
m = mutations[i];
if(m.type != "childList"){
return;
}
for(j = 0; j < m.addedNodes.length; j++){
thread.queue(m.addedNodes[j]);
}
}
thread.start();
}).observe(document.body, {
childList: true,
subtree: true
});
}();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址