View previous topic :: View next topic |
Author |
Message |
NueX Apprentice
Joined: 19 Jun 2003 Posts: 196 Location: Germany
|
Posted: Sat Oct 18, 2003 12:29 pm Post subject: [OT] Script gesucht: "Wörter Hüllen"->"W |
|
|
Titel: [OT] Script gesucht: "Wörter Hüllen"->"Wterör Hlelün"
Hallo!
Hab grad durch Zufall "MrTom"s Signatur gelesen.
MrTom wrote: | Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid. Das ezniige was wcthiig ist, ist daß der estre und der leztte Bstabchue an der ritihcegn Pstoiion snid. |
Sie hat mich an eine Mail erinnert, die ich zu diesem Thema bekommen habe. Ich finde dieses Phänomen, dass man Wörter ohne Probleme lesen kann, auch wenn nur der erste und der letzte Buchstabe an richtiger Position stehen, hoch interessant.
Nun ist meine Frage:
Kennt jemand ein Script, welches Eingabetexte nach diesem Prinzip ändert und wieder ausgibt, bzw. hat jemand die nötigen Kenntnisse und Lust ein solches Script zu programmieren? Fänd ich praktisch, mal Texte nach dem Prinzip verschlüsseln zu können. Vielleicht hat ja jemand Lust dazu.
Grüße, NueX
[Edit 1: +"Titel: [OT] Script gesucht: "Wörter Hüllen"->"Wterör Hlelün""] |
|
Back to top |
|
|
bmichaelsen Veteran
Joined: 17 Nov 2002 Posts: 1277 Location: Hamburg, Germany
|
|
Back to top |
|
|
c07 Veteran
Joined: 25 Oct 2002 Posts: 1091
|
Posted: Sat Oct 18, 2003 7:23 pm Post subject: |
|
|
Folgendes Bookmarklet kann die meisten Webseiten ziemlich komplett umschreiben:
javascript: function Scramble( item, prop ) { var rand= Math.random; var floor= Math.floor; var txt= item[prop]; if ( txt.length < 4 ) return; var list= txt.split( /([A-Za-z\xc0-\xc6\xc8-\xe6\xe8-\xff]+)/ ); for ( txt= list[0], i= 1, ie= list.length; i < ie; ++i ) { var word= list[i]; var len= word.length; if ( len < 4 ) { txt += word; } else { txt += word.charAt( 0 ); var last= word.charAt( --len ); var chars= word.slice( 1, len-- ).split( "" ); do txt += chars.splice( floor( rand() * len ), 1 )[0]; while ( --len > 1 ); txt += chars[0] + last; } txt += list[++i]; } item[prop]= txt; } function ProcNode( node ) { var xhtml= "http://www.w3.org/1999/xhtml"; switch ( node.nodeType ) { case 3: case 4: case 8: Scramble( node, "data" ); break; case 1: for ( var childs= node.childNodes, i= 0, ie= childs.length; i < ie; ++i ) ProcNode( childs[i] ); do { var ns= node.namespaceURI; var tag= node.tagName; if ( ! ns ) tag= tag.toLowerCase(); else if ( ns != xhtml ) break; Scramble( node, "title" ); switch ( tag ) { case "input": switch ( node.type ) { case "text": case "button": case "submit": case "reset": Scramble( node, "value" ); break; case "image": Scramble( node, "alt" ); break; } break; case "textarea": Scramble( node, "value" ); break; case "img": case "area": case "applet": Scramble( node, "alt" ); break; case "optgroup": case "option": Scramble( node, "label" ); break; case "table": Scramble( node, "summary" ); break; case "th": Scramble( node, "abbr" ); break; } } while ( false ); break; } } function ProcFrame( frame ) { var elt= frame.document.documentElement; try { elt.normalize(); ProcNode( elt ); } catch ( e ) {} for ( var frames= frame.frames, i= 0, ie= frames.length; i < ie; ++i ) ProcFrame( frames[i] ); } Scramble( document, "title" ); Scramble( this, "status" ); ProcFrame( this );
Funktioniert zumindest in Mozilla, aber nur, solang es keine Frames aus fremden Domains gibt. Einfach den vorigen Absatz als URL bookmarken und bei Bedarf aufrufen. Nachdem es auch Formularfelder umwandelt, kann man solche benutzen, um beliebige Texte zu konvertieren.
Bei sehr langen Wörtern, die es ja im Deutschen durchaus gibt, wird die Sache übrigens doch recht unleserlich, aber sonst ist die Lesbarkeit schon erstaunlich gut.
Hier noch das Skipt in lesbarer Form:
Code: | function Scramble( item, prop )
{
var rand= Math.random;
var floor= Math.floor;
var txt= item[prop];
if ( txt.length < 4 )
return;
var list= txt.split( /([A-Za-z\xc0-\xc6\xc8-\xe6\xe8-\xff]+)/ );
for ( txt= list[0], i= 1, ie= list.length; i < ie; ++i )
{
var word= list[i];
var len= word.length;
if ( len < 4 )
{
txt += word;
}
else
{
txt += word.charAt( 0 );
var last= word.charAt( --len );
var chars= word.slice( 1, len-- ).split( "" );
do txt += chars.splice( floor( rand() * len ), 1 )[0];
while ( --len > 1 );
txt += chars[0] + last;
}
txt += list[++i];
}
item[prop]= txt;
}
function ProcNode( node )
{
var xhtml= "http://www.w3.org/1999/xhtml";
switch ( node.nodeType )
{
case 3:
case 4:
case 8:
Scramble( node, "data" );
break;
case 1:
for ( var childs= node.childNodes, i= 0, ie= childs.length; i < ie; ++i )
ProcNode( childs[i] );
do
{
var ns= node.namespaceURI;
var tag= node.tagName;
if ( ! ns )
tag= tag.toLowerCase();
else
if ( ns != xhtml )
break;
Scramble( node, "title" );
switch ( tag )
{
case "input":
switch ( node.type )
{
case "text":
case "button":
case "submit":
case "reset":
Scramble( node, "value" );
break;
case "image":
Scramble( node, "alt" );
break;
}
break;
case "textarea":
Scramble( node, "value" );
break;
case "img":
case "area":
case "applet":
Scramble( node, "alt" );
break;
case "optgroup":
case "option":
Scramble( node, "label" );
break;
case "table":
Scramble( node, "summary" );
break;
case "th":
Scramble( node, "abbr" );
break;
}
}
while ( false );
break;
}
}
function ProcFrame( frame )
{
var elt= frame.document.documentElement;
try {
elt.normalize();
ProcNode( elt );
}
catch ( e ) {}
for ( var frames= frame.frames, i= 0, ie= frames.length; i < ie; ++i )
ProcFrame( frames[i] );
}
Scramble( document, "title" );
Scramble( this, "status" );
ProcFrame( this ); |
|
|
Back to top |
|
|
haggi Tux's lil' helper
Joined: 09 Jun 2003 Posts: 135 Location: Hamburg / Germany
|
|
Back to top |
|
|
MrTom l33t
Joined: 20 Jan 2003 Posts: 608
|
Posted: Sun Oct 19, 2003 2:45 pm Post subject: |
|
|
Hab mir eigentlich gar keine Gedanken bei der Sache gemacht.
Wollte einfach mal wieder eine neue Signatur. Hab schon eine pn deshalb bekommen!
Und nun wandere ich gerade so durch das Forum und sehe das hier
Was durch eine Signatur so alles passieren kann... Zum Glück habe ich niemanden zu einem Blödsinn verleitet... |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|