Zur Navigation

Bei aktiven JS soll &js=on nach klick anghängt werden

1 halbesbit

<html>
<head>
<script LANGUAGE="JavaScript">
<!--
window.document.onclick = function(e) {
    if(!e) e = window.event;
    var element = e.src || e.target;
if(element.href){ 
document.getElementById("huhu").innerHTML=element.href+"&js=on";
open( element.href, ""+href+"");
} 
<!--if(element.title){ document.getElementById("huhu").innerHTML=element.title; } -->
} 
//-->
</script>
</head>
<body>
<div id="huhu"></div>
<H3>Mausereignisse</H3>
<ul>
<li><a href="?1" title="titletest1">Test Link 1</a></li>
<li><a href="?2">Test Link 2</a></li>
<li><a href="?3">Test Link 3</a></li>
<li><a href="?4">Test Link 4</a></li>
<li><a href="?5">Test Link 5</a></li>
</ul>
</body>
</html>

Damit wollte ich erreichen das &js=on bei aktiven Javascript angehängt wird und ein Link geklickt wurde, doch irgenwie scheint das nicht so zu funktionieren wie ich möchte :(
Mir ist klar das wenn der link angeklickt wurde die Seite neu lädt aber ist es trotzdem irgenwie möglich?

02.12.2008 21:42 | geändert: 02.12.2008 21:54

2 Jörg Kruse

Wenn ich auf einen Link klicke, zeigt mir die Fehlerkonsole in Firefox für Zeile 10 diesen Fehler an:

Fehler: href is not defined

Also für diese Zeile:

open( element.href, ""+href+"");

Worauf bezieht sich das zweite href? Vollständig wäre "element.href" - dann wäre der Fenstername identisch mit der URL;

02.12.2008 23:05

3 halbesbit

Ja bisher ist das nur eine idee die aber so nicht funktioniert :(
Nun habe ich :
<html>
<head>
<title>Neue Mausereignisse</title>
<script LANGUAGE="JavaScript">
<!--
window.document.onclick = function(e) {
    if(!e) e = window.event;
    var element = e.src || e.target;
if(element.href){ 
<!-- document.getElementById("huhu").innerHTML=element.href+"&js=on"; -->
<!-- open( element.href+"&js=on", ""+href+""); -->
window.location.href=element.href+"&js=on";
} 
} 
//-->
</script>
<?php $json=($_GET["js"]=="on")? "&js=on":"&js=off"; ?>
</head>
<body>
<div id="huhu"></div>
<H3>Mausereignisse</H3>
<ul>
<li><a href="?1<?php echo $json; ?>" title="titletest1">Test Link 1</a></li>
<li><a href="?2<?php echo $json; ?>">Test Link 2</a></li>
<li><a href="?3<?php echo $json; ?>">Test Link 3</a></li>
<li><a href="?4<?php echo $json; ?>">Test Link 4</a></li>
<li><a href="?5<?php echo $json; ?>">Test Link 5</a></li>
</ul>
</body>
</html>
Funktioniert aber auch nicht :(
Gibt es evtl einen anderen ansatz wie man sowas machen kann?

02.12.2008 23:16

4 Jörg Kruse

Mir ist ehrlich gesagt noch nicht klar, was du mit dem Script erreichen möchtest. Die HTML-Kommentarzeichen "<!--" und "-->" gehören jedenfalls nicht ins Script. Zum Auskommentieren werden in JavaScript "/*" und "*/" verwendet

/* document.getElementById("huhu").innerHTML=element.href+"&js=on";
open( element.href+"&js=on", ""+href+""); */

02.12.2008 23:24 | geändert: 02.12.2008 23:25

5 halbesbit

Naja ich möchte damit herausfinden ob js aktiviert ist oder nicht und gegebenfalls andere scripts includieren oder halt nicht.
Nur dafür müsste ich erstmal ermitteln ob an oder aus.
achso ja mit dem auskommenieren habe ich schon bemerkt!

02.12.2008 23:34 | geändert: 02.12.2008 23:35

6 Jörg Kruse

Probier's mal so:

<script type="text/javascript">
window.onload = e;
function e() {
    if (!document.getElementsByTagName) {
        return;
    }
    var links,a,i;
    links = document.getElementsByTagName("a");
    for (i = 0; i < links.length; i++) {
        a = links[i];
            a.onclick = function() {
                window.location.href = this.href + "&js=on";
                return false;
            }
    }
}
</script>

03.12.2008 09:18 | geändert: 03.12.2008 09:21

7 halbesbit

<?php 
$javascriptstatus=((int)$_GET["js"])? 1:0; 
if (count($_GET)==0){ $query="?";}
if (count($_GET)>=1){ $query="&";}
?>
<html>
<head>
<script type="text/javascript">
<!--
document.onclick = function(e) 
{
	if(!e) e = window.event;
	var element = e.src || e.target;
	if(element.href)
	{ 
	top.location.href=element.href+"<?php echo $query; ?>js=1";return false; }
} 

//-->
</script>

</head>
<body>
<h1>JavaScript Status</h1>
<ul>
<li><a href="?a=1">Test Link 1</a></li>
<li><a href="?a=2">Test Link 2</a></li>
<li><a href="?a=3">Test Link 3</a></li>
<li><a href="?a=4">Test Link 4</a></li>
<li><a href="?">Test Link 5</a></li>
</ul>
<?php 
if($javascriptstatus) { echo "JavaScripts geladen!<br />";
}else{echo "JavaScripts <b>nicht</b> geladen!<br />";}

?>
</body>
</html>
Funktioniert auch soweit nur im IE nicht :(
Wenn das gelöst ist werde ich es noch weiter verbessern ;)

03.12.2008 09:40 | geändert: 03.12.2008 09:42

8 Jörg Kruse

Schau dir mal die Fehlerkonsole an (auf das gelbe Dreieck klicken) - da meckert er über diese Zeile:

	if(element.href)

'href' ist Null oder kein Objekt

Aber warum übernimmst du nicht mein Script-Beispiel - das funktioniert auch im IE.

03.12.2008 10:02

9 halbesbit

irgendwie tut es auch nicht im ie6, anderen habe ich zur zeit nicht.

03.12.2008 10:08

10 Jörg Kruse

In meinem IE6 werden die "&js=on" angehängt.

03.12.2008 10:13