привет All!
Вот есть замечательный скрипт еще с Оперы, кот. замечательно рабаотает и по сей день.
// ==UserScript== // @name Clean URI // @author TarquinWJ // @namespace http://www.howtocreate.co.uk/ // @version 1.3.3 // see http://www.howtocreate.co.uk/operaStuff/userJavaScript.html for details window.addEventListener( 'load', function mwjenabledCleanURI() { /**************************************************************************************** Options can be set here ****************************************************************************************/ var useSeparateLink = true; //true to create 'CleanURL' links, false to replace existing var fixLinkType = 0; //1 = redirect links, 2 = JavaScript window.open links, 0 = both var allowParams = false; //true = assume that all parameters after the start of the redirect URL are part of the URL //false = (default) only allow the redirect URL to exist within a single query parameter /***************************************************************************************/ for( var x = 0, urlMatch = /window\.open\s*\(\s*["']([^"']*)["']/, httpMatch = /https?(:|%3a)(\/|%2f)(\/|%2f)/i; x < document.links.length; x++ ) { var newHref = '', curLink = document.links[x]; if( ( fixLinkType != 1 ) && curLink.protocol.toLowerCase() == 'javascript:' && curLink.href.match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 1 ) && ( curLink.protocol.toLowerCase() == 'javascript:' || curLink.hash == '#' ) && curLink.hasAttribute('onclick') && curLink.getAttribute('onclick').match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 2 ) && curLink.hostname && !curLink.hostname.match(/w3c?.org$/) ) { if( pos = curLink.search.match(httpMatch) ) { newHref = unescape(allowParams?curLink.search.substr(pos.index).replace(/#.*$/g,''):curLink.search.substr(pos.index).replace(/[&#].*$/g,'')); } else if( pos = curLink.pathname.match(httpMatch) ) { newHref = unescape(curLink.pathname.substr(pos.index).replace(/[&#].*$/g,'')); } } if( newHref ) { var oRel = curLink.getAttribute('rel'); oRel = oRel ? ( oRel + ' ' ) : ''; curLink.setAttribute('rel',oRel+'redirect'); if( useSeparateLink ) { var oLink = document.createElement('a'); oLink.setAttribute('href',newHref); oLink.appendChild(document.createTextNode('☼')); curLink.parentNode.insertBefore(document.createTextNode(' '),curLink.nextSibling); curLink.parentNode.insertBefore(oLink,curLink.nextSibling.nextSibling); x++; } else { curLink.setAttribute('replacedurl',curLink.href); curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: ' + curLink.href; curLink.href = newHref; } } } }, false );
Отредактировано HaGEN (11-09-2014 05:41:04)
Отсутствует
хехех, вроде нашел сам. Полистал про window.addEventListener (ибо мну не кодер, хехе) и вот чего нашел:
просто продублировал тело скрипта еще раз с заменой в события 'load' на 'mouseover' и всё работаит Всё однож перед кликом надобно навести мыша на ссылку, вот оно и срабатывает, урачтоле!
Может можно как-то сделать изящнее, передать параметры(оба события и load и mouseover) в одну ф-цию...? хотя и так работает... вроде
// ==UserScript== // @name Clean-URI // @namespace http://userscripts.org/users/12 // @description Очищает ссылки на тех сайтах где стоит переход http://...goto?=<нужный адресс>, делая рядом "чистую ссылку" - '☼' // @version 1.3.3 // @license GPL // @include * // @grant none // ==/UserScript== window.addEventListener( 'load', function mwjenabledCleanURI() { /**************************************************************************************** Options can be set here ****************************************************************************************/ var useSeparateLink = false; //true to create 'CleanURL' links, false to replace existing var fixLinkType = 0; //1 = redirect links, 2 = JavaScript window.open links, 0 = both var allowParams = false; //true = assume that all parameters after the start of the redirect URL are part of the URL //false = (default) only allow the redirect URL to exist within a single query parameter /***************************************************************************************/ for( var x = 0, urlMatch = /window\.open\s*\(\s*["']([^"']*)["']/, httpMatch = /https?(:|%3a)(\/|%2f)(\/|%2f)/i; x < document.links.length; x++ ) { var newHref = '', curLink = document.links[x]; if( ( fixLinkType != 1 ) && curLink.protocol.toLowerCase() == 'javascript:' && curLink.href.match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 1 ) && ( curLink.protocol.toLowerCase() == 'javascript:' || curLink.hash == '#' ) && curLink.hasAttribute('onclick') && curLink.getAttribute('onclick').match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 2 ) && curLink.hostname && !curLink.hostname.match(/w3c?.org$/) ) { if( pos = curLink.search.match(httpMatch) ) { newHref = unescape(allowParams?curLink.search.substr(pos.index).replace(/#.*$/g,''):curLink.search.substr(pos.index).replace(/[&#].*$/g,'')); } else if( pos = curLink.pathname.match(httpMatch) ) { newHref = unescape(curLink.pathname.substr(pos.index).replace(/[&#].*$/g,'')); } } if( newHref ) { var oRel = curLink.getAttribute('rel'); oRel = oRel ? ( oRel + ' ' ) : ''; curLink.setAttribute('rel',oRel+'redirect'); if( useSeparateLink ) { var oLink = document.createElement('a'); oLink.setAttribute('href',newHref); oLink.appendChild(document.createTextNode('☼')); curLink.parentNode.insertBefore(document.createTextNode(' '),curLink.nextSibling); curLink.parentNode.insertBefore(oLink,curLink.nextSibling.nextSibling); x++; } else { curLink.setAttribute('replacedurl',curLink.href); curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: ' + curLink.href; curLink.href = newHref; } } } }, false ); /************************************************/ window.addEventListener( 'mouseover', function mwjenabledCleanURI() { /**************************************************************************************** Options can be set here ****************************************************************************************/ var useSeparateLink = false; //true to create 'CleanURL' links, false to replace existing var fixLinkType = 0; //1 = redirect links, 2 = JavaScript window.open links, 0 = both var allowParams = false; //true = assume that all parameters after the start of the redirect URL are part of the URL //false = (default) only allow the redirect URL to exist within a single query parameter /***************************************************************************************/ for( var x = 0, urlMatch = /window\.open\s*\(\s*["']([^"']*)["']/, httpMatch = /https?(:|%3a)(\/|%2f)(\/|%2f)/i; x < document.links.length; x++ ) { var newHref = '', curLink = document.links[x]; if( ( fixLinkType != 1 ) && curLink.protocol.toLowerCase() == 'javascript:' && curLink.href.match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 1 ) && ( curLink.protocol.toLowerCase() == 'javascript:' || curLink.hash == '#' ) && curLink.hasAttribute('onclick') && curLink.getAttribute('onclick').match(urlMatch) ) { newHref = (RegExp.$1).replace(/\\\//g,'\/'); } else if( ( fixLinkType != 2 ) && curLink.hostname && !curLink.hostname.match(/w3c?.org$/) ) { if( pos = curLink.search.match(httpMatch) ) { newHref = unescape(allowParams?curLink.search.substr(pos.index).replace(/#.*$/g,''):curLink.search.substr(pos.index).replace(/[&#].*$/g,'')); } else if( pos = curLink.pathname.match(httpMatch) ) { newHref = unescape(curLink.pathname.substr(pos.index).replace(/[&#].*$/g,'')); } } if( newHref ) { var oRel = curLink.getAttribute('rel'); oRel = oRel ? ( oRel + ' ' ) : ''; curLink.setAttribute('rel',oRel+'redirect'); if( useSeparateLink ) { var oLink = document.createElement('a'); oLink.setAttribute('href',newHref); oLink.appendChild(document.createTextNode('☼')); curLink.parentNode.insertBefore(document.createTextNode(' '),curLink.nextSibling); curLink.parentNode.insertBefore(oLink,curLink.nextSibling.nextSibling); x++; } else { curLink.setAttribute('replacedurl',curLink.href); curLink.title = ( curLink.title ? ( curLink.title + ' - ' ) : '' ) + 'Old URL: ' + curLink.href; curLink.href = newHref; } } } }, false );
которя говорит скрипту заменять ли ссылку очищенной или генерить рядом чистую ссылку. Теперь ВКонтакте такая картина, при каждом наведении мыша генерицца новый значек очищенной ссылки
надо какой-то счетчик что-ле... или вообще на другое событие какое, низнаю. эхъ...
Отредактировано HaGEN (11-09-2014 08:38:40)
Отсутствует
ну в общем уже пользуюсь и отпишу сюдой. Событие вписал 'click' (заместо 'mouseover') и просто в скриптег теперь нужно прописать адреса тех страниц где "подгрузка" - всекте, одноглазнике и прочие которые попадают под регулярку данного скрипта. При клике на ссылке скрипт запускаецца и очищает ссылку, переход по чистой без редиректа.
ну вроде всё. Спасибо всем. В особенности TarquinWJ за отличный код который и спустя годы прекрасно работает и в других бравзерах. Отэта правильное гунфу!
Можно закрыть, ибо фсё
Отредактировано HaGEN (04-11-2014 02:57:12)
Отсутствует