Schwer zu beschreiben (probleme mit @ts)

SonicBe@m

Erfahrenes Mitglied
Hy leute
das Problem ist im Titel bischen schwer zu beschreiben ^^.
Aber das werdet ihr schon noch sehen :-)

Also es geht darum,
ich schreibe mir gerade ein JS welches ALLE Links beim aufruf der seite für 2 Sekunden deaktiviert (a,input,button)...
nun gut kommen wir mal zur logik

Das Script macht folgendes:
es speicher praktisch alle Hyperlinks in einem Array das später wieder ausgelesen wird (nach 2 sek) und wieder alles herstellt.

Soweit so gut das Script funktioniert auch schon bis dahin ^^
Nun bekomme ich aber einen wirklich merkwürdigen Fehler
da ich mir target und href von den Links merke müsste es eigentlich so sein,
das ich auf den Text des Links keinen einfluss ausübe,
aber scheinbar checkt Javascript es nicht sobald ein @ im text ist ^^
dann nehmlich replacet er den Zext mit der Url und genau das DARF er nicht,
sobald Bilder im Text stehen z.b. <a href="blub" target="_blank"><img src......"></a> spinnt er ganz rum und verwirft die einfach ^^,
jedenfalls bei der 2ten möglichkeit die ich probiert habe ^^.
Nun wollte ich euch mal fragen ob ihr eine möglichkeit kennt unabhängig von der Seite, das er bestimmte sondersymbole gegen sein Asciicode austauscht
beim @ wäre es halt dann @
hier also mein Code.

Wenn ihr es startet wird 2 Sekunden später der link text überschrieben!
gibs ne möglichkeit mit doc.all.replace oder so die wegzumachen
Achso und für die die evt. auch noch kommen und sagen 'machs ausm html raus' , nein ich will die Sonderzeichen NICHT aus dem Html rausmachen das soll alles so bleiben wie es soll!

PHP:
<HTML>
<HEAD></head>
<body>
<table width=75% border=0 cellspacing=2 cellpadding=2 align=center>
  <tr align=center>
    <td width=8% class=head>Planet</td>
    <td width=64% class=head>Name</td>
    <td width=10% class=head>Action</td>
    <td width=10% class=head>Punkte</td>
    <td width=8% class=head>Ban</td>
  </tr>
  <tr align=center>
    <td>1</td>
    <td>Crash1 (<a href="http://xxx.xx/showplayername.php\?todo=...">m@ce</a>)
      [<a href="http://xxx.xx/showallitag.php\?todo=..."> Info</a></td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=15618"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>5.970</font></td>
    <td>-</td>
  </tr>
  <tr align=center>
    <td>2</td>
    <td>Amsterdam (<a href="http://xxx.xx/showplayername.php\?todo=...">Orange
        Empire</a>) [<a href="http://xxx.xx/showallitag.php\?todo=...">LIGHT</a>] </td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=16467"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>4.421</font></td>
    <td>-</td>
  </tr>
  <tr align=center>
    <td>3</td>
    <td>Crash4 (<a href="http://xxx.xx/showplayername.php\?todo=...">m@ce</a>)
      [<a href="http://xxx.xx/showallitag.php\?todo=...">DaIm</a>] </td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=15618"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>4.528</font></td>
    <td>-</td>
  </tr>
  <tr align=center>
    <td>4</td>
    <td>Crash2 (<a href="http://xxx.xx/showplayername.php\?todo=...">m@ce</a>)
      [<a href="http://xxx.xx/showallitag.php\?todo=...">DaIm</a>] </td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=15618"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>4.352</font></td>
    <td>-</td>
  </tr>
  <tr align=center>
    <td>5</td>
    <td>Planet (<a href="http://xxx.xx/showplayername.php\?todo=...">Schlucki83</a>)
      [<a href="http://xxx.xx/showallitag.php\?todo=...">LIGHT</a>] </td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=13272"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>2.560</font></td>
    <td>-</td>
  </tr>
  <tr align=center>
    <td>6</td>
    <td>Crash3 (<a href="http://xxx.xx/showplayername.php\?todo=...">m@ce</a>)
      [<a href="http://xxx.xx/showallitag.php\?todo=...">DaIm</a>] </td>
    <td>&nbsp;&nbsp;<a class=navired href="http://www.warofgalaxy.com/msg_antwort.php?reply_to=15618"><img src="/grafik/buttons/mail_button.gif" alt="Kommunikation" border="0"></a></td>
    <td>4.350</font></td>
    <td>-</td>
  </tr>
</table>
<script type="text/javascript">
var DisabledLinkHref = 'javascript:void(0)';
var DisabledLinkTarget = '';
var LinkArray = new Array;
function deactivateClickable(elem){
	if(elem == 'a') {
		// save all links and replace it with void(0)
		for(i=0;i<document.links.length;i++) {
			a = document.links[i].href;
			b = document.links[i].target;
//			if(document.all) 
//				if(document.links[i].innerText != '')
//					c = document.links[i].innerText;
//			else 
//				c = document.links[i].text;
			LinkArray[i] = new DisabledLink(i,a,b);
			document.links[i].href = DisabledLinkHref;
			document.links[i].target = DisabledLinkTarget;
		}
	}
	else {
		// disable all buttons
		var elem = document.getElementsByTagName(elem);
		for (var i =0;i<elem.length;i++) {
		var attribute = elem[i].getAttribute('type');
			if(attribute == 'submit' || attribute == 'image' || attribute == 'button')
				elem[i].disabled=true;
		}
	}
}
function activateClickable(elem){
	if(elem == 'a'){
		// get all saved links an replace it with his old value
		for(i=0;i<LinkArray.length;i++) {
			document.links[LinkArray[i].index].href = LinkArray[i].href;
			document.links[LinkArray[i].index].target = LinkArray[i].target;
/*			if(document.all) {
				document.links[LinkArray[i].index].innerText = LinkArray[i].text;
				alert("'"+document.links[LinkArray[i].index].innerText+"'");
			}
			else 
				document.links[LinkArray[i].index].text = LinkArray[i].text;
*/
		}
	}
	else {
	// activate all buttons
		var elem = document.getElementsByTagName(elem);
		for (var i =0;i<elem.length;i++) {
			elem[i].disabled=false;
		}
	}
}
function DisabledLink(i,h,t) {
	// pseudo object for array generation
	this.index = i;
	this.href = h;
	this.target = t;
	//this.text = text;
}
function start(holdTime){
	var elements = new Array('a','input','button');
	for (var i =0;i<elements.length;i++) {
		element = elements[i];
		deactivateClickable(element);
		window.setTimeout("activateClickable('"+element+"')",holdTime);
	}
}
 start(1500); // starts all
 </script>
</body>
</html>
 
Mmmh... in meinem IE funktioniert dein Code, aber wenn du es sagst, wirds schon so sein.
Ich würd vorschlagen, anders an die Sache ranzugehen... spart dir Skriptcode und funktioniert in mehr Browsern, als dein Skript.
Ansatz #1:
Anstatt href zu speichern und neu zu setzen, lege beim Start auf alle Elemente ein Onclick="return false;"
Dann kann man zwar raufklicken, es passiert aber nix... nach 2 sec legst du auf onclick ein "void(0)" ....
von da an sind die Elemente klickbar
Code:
<script type="text/javascript">
<!--

var disabledElements=new Array();
F1=new Function('f1','return false');
F2=new Function('f2','window.focus');
F3=new Function('f3','void(0)');

function enableElements()
{
for(dE=0;dE<disabledElements.length;++dE)
	{
	disabledElements[dE].onclick=F3;
	disabledElements[dE].onfocus=F3;
	}
}


function disableElements()
{
//Links
for(a=0;a<document.links.length;++a)
	{
	disabledElements[disabledElements.length]=document.links[a];
	document.links[a].onclick=F1;
	document.links[a].onfocus=F2;
	}

//input-button/submit/image
for(f=0;f<document.forms.length;++f)
	{
		for(e=0;e<document.forms[f].elements.length;++e)
			{
			eType=document.forms[f].elements[e].type;
			if(eType.match(/(button|submit|image)/))
				{
				disabledElements[disabledElements.length]=document.forms[f].elements[e];
				document.forms[f].elements[e].onclick=F1;
				document.forms[f].elements[e].onfocus=F2;
				}
			}
	}
setTimeout("enableElements()",2000);
}
disableElements();
//-->
</script>

Ansatz 2:
Da du, wie im Skript ertsichtlich, auch versucht hast, den Text solange zu verstecken, verstecke einfach alle Elemente....
was nicht zu sehen ist, kann man auch nicht anklicken :-)
Code:
<script type="text/javascript">
<!--

var disabledElements=new Array();

function enableElements()
{
for(dE=0;dE<disabledElements.length;++dE)
	{
		disabledElements[dE].style.visibility='visible';
	}
}


function disableElements()
{
//Links
for(a=0;a<document.links.length;++a)
	{
	disabledElements[disabledElements.length]=document.links[a];
	document.links[a].style.visibility='hidden';
	}

//input-button/submit/image
for(e=0;e<document.getElementsByTagName('input').length;++e)
	{
			eType=document.getElementsByTagName('input')[e].type;
			if(eType.match(/(button|submit|image)/))
				{
				disabledElements[disabledElements.length]=document.getElementsByTagName('input')[e];
				document.getElementsByTagName('input')[e].style.visibility='hidden';
				}
	}
setTimeout("enableElements()",2000);
}
if(document.getElementById)
	{
	disableElements();
	}
//-->
</script>
Das sieht allerdings nen bisserl doof aus mit den Leerräumen zwischen den Klammern....
statt visibility->hidden/visible würde der Leerraum da zwar mit display->none/inline nicht erscheinen, das geht aber mit Opera5/6 nicht :(.
 
Zuletzt bearbeitet:
ah Danke ;)
Ok also wenn dann würde ich die mit onClick-disable nehmen.
Der User soll ja alles sehen da er sonst in seiner Taktischendenkweise durcheinander gebracht wird.
ok mal die onClick variante ausprobieren! :)
 

Neue Beiträge

Zurück