>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Скрипты http://forum.mozilla-russia.org/viewforum.php?id=37 >Clean-URl.js заставить работать на подгружаемых страницах. http://forum.mozilla-russia.org/viewtopic.php?id=64888 |
HaGEN > 11-09-2014 04:21:23 |
привет 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 ); Очищает ссылки типа goto?= или away.php?= и др. Но появились такие страницы как вконтакте или одноглазнике - когда страница "подгружается" снизу(или как вконтакте может и снизу и сверху подгружаться, "показать новую запись")... и вот в этой части страницы уже ссылки не очищаются. Собсна вопросс-просьба, можно это побороть? Чтобы или сам скрипт периодически повторялся или мож еще событие какое ему дописать можно, чтобы реагировал... Или в GM дело? |
HaGEN > 11-09-2014 07:57:54 |
хехех, вроде нашел сам. Полистал про window.addEventListener (ибо мну не кодер, хехе) и вот чего нашел: скрытый текст Выделить код Код:// ==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 > 04-11-2014 02:53:37 |
ну в общем уже пользуюсь и отпишу сюдой. Событие вписал 'click' (заместо 'mouseover') и просто в скриптег теперь нужно прописать адреса тех страниц где "подгрузка" - всекте, одноглазнике и прочие которые попадают под регулярку данного скрипта. При клике на ссылке скрипт запускаецца и очищает ссылку, переход по чистой без редиректа. |