NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name mail.yandex.ru redirects remover
// @name:ru Удаление редиректов из Яндекс.Почты
// @namespace http://userstyles.org/
// @description Removes annoying mail.yandex.ru redirects from all in-mail links.
// @description:ru Удаляет ненужные редиректы, которые вставляются во все письма в Яндекс.Почте
// @grant none
// @include https://mail.yandex.ru*
// @include http://mail.yandex.ru*
// @license MIT
// @version 1.0.1
// ==/UserScript==
(function() {
document.addEventListener("DOMNodeInserted", function(evt) {
replaceReds(evt.relatedNode);
});
function replaceReds(parentNode) {
var AllLinks = parentNode.getElementsByTagName('a');
var RedLinkExpr = /(.*)mail.yandex.ru\/re\.jsx\?(.*)/i;
for (var i = 0; i < AllLinks.length; i++)
if(RedLinkExpr.test(AllLinks.item(i).href)) {
linkEncoded = getParam(RegExp.$2, "l");
linkParts = linkEncoded.split("_");
// dunno if more than one parameter group possible, but why take a chance?
for (var j = 0; j < linkParts.length; j++)
linkParts[j] = b64_to_utf8(linkParts[j]);
AllLinks.item(i).href = linkParts.join("?");
}
}
function getParam(parameters, paramName) {
var paramArray = parameters.split("&");
var i = 0;
while(i < paramArray.length) {
var paramParsed = paramArray[i].split("=");
if(paramParsed[0] == paramName) // check parameter name
return paramParsed[1]; // return parameter value if name matched
i++;
}
return "";
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding#The_.22Unicode_Problem.22
function b64_to_utf8(str) {
return decodeURIComponent(escape(window.atob(str)));
}
})();