Hallo Allesamt.
Nach langer langer Zeit möchte ich dieses Thema nochmals für die Nachwelt aufgreifen...
Nachdem nach einem Firefox-Update (gemäß dem Standart wie ich herausfand) der Zugriff meines GM-Scripts auf den Frame untersagt wurde (andere Domain!) musst ich doch nochmal ein wenig Zeit investieren.
Natürlich griff ich den (total simplen) Vorschlag mein "Vorredners" auf, ergänzte Ihn lediglich um ein paar Zeilen und habe eine noch viel einfachere und schönere Variante als zuvor. Nochmals vielen, vielen Dank!
Getestet habe ich es nun nur unter der FF 4.0. Also keine Ahnung ob es unter alten Versionen läuft, da sich im laufe der Zeit immer mal der Zugriff über DOM geändert hatte (keine ahnung wieso...)
Anbei also für Personen die es benötigen (können):
// ==UserScript==
// @name T-Online Webmail Splitlogin
// @namespace My
// @include https://login.idm.telekom.com*
// ==/UserScript==
var domInput = document.evaluate("//input[@name = 'domn']", document, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var usrInput = document.evaluate("//input[@name = 'usr']", document, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var form = document.evaluate("//form[@name = 'login']", document, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
form.addEventListener('submit', handleSubmit, true);
//Für debugging
//domInput.addEventListener('click', function(event) { switchdisplay(true); }, true);
//usrInput.addEventListener('click', function(event) { switchdisplay(false); }, true);
switchdisplay(false);
function switchdisplay(IsShow) {
//@ Zeichen entfernen und verbreitern
domInput.parentNode.firstChild.nodeValue = ( IsShow ) ? "@"+String.fromCharCode(160) : ""; //"\u+00A0"
domInput.style.width = ( IsShow ) ? "120px" : "300px";
//Userinput ausblenden
usrInput.style.display = ( IsShow ) ? "" : "none";
usrInput.style.width = ( IsShow ) ? "120px" : "0px";
( IsShow ) ? usrInput.parentNode.setAttribute("width", "120") : usrInput.parentNode.removeAttribute("width");
usrInput.parentNode.style.display = ( IsShow ) ? "" : "none";
//Einmal ne fixe breite angegeben - löschen? // previousElementSibling = previousSibling.previousSibling da das erste nur textnode ist!
//( IsShow ) ? "@"+String.fromCharCode(160) : usrInput.parentNode.previousElementSibling.removeAttribute("width");
usrInput.parentNode.nextElementSibling.firstChild.nodeValue = ( IsShow ) ? String.fromCharCode(160) : "";
}
function handleSubmit(e) {
//Nahezu Ursprung der Felder wiederherstellen - Optional, sieht man nur kurz :-)
switchdisplay(true);
//Eigentliche Arbeit
var split = domInput.value.split("@");
usrInput.value = split[0];
domInput.value = split[1];
}
Alles anzeigen