2012-04-06 6 views
0

Mögliche Duplizieren:
innerDocument.getElementById(<elment ID>).click(); doesn't work in Firefox/chrome, in IE it worksgetelemenById ('...') Klick funktioniert nicht in Chrome

Ich habe eine HTML-Seite mit Registerkarten.

   <ul class="tabs"> 
        <li><a href="#tab1" id='accomodation'>Accomodation</a></li> 
        <li><a href="#tab2" id='relaxation'>Relaxation</a></li> 
        <li><a href="#tab3" id='recreation'>Recreation</a></li> 
        </ul> 

Ich komme aus einem anderen html mit Klick und ich möchte in Bezug auf die Registerkarte zeigen, was ich angeklickt früher (I speichern sie in einem Cookie).

Deshalb habe ich IDs für die Registerkarten hinzugefügt und wenn diese Seite geladen wird, rufe ich eine Funktion auf, die die ID aus dem Cookie liest und dann auf die betreffende Registerkarte klickt. Die Funktion läuft, wenn die Seite geladen wird:

<body onLoad="where_from();"> 

Hier ist die Funktion:

function where_from() 
{ 
    if (readCookie('came_from')!="false") 
    { 
     pos=readCookie('came_from'); 
     if (pos=='relaxation') 
      document.getElementById('relaxation').click(); 

     if (pos=='recreation') 
      document.getElementById('recreation').click(); 
} 

}

Es funktioniert perfekt in IE und Firefox, aber nichts passiert in Chrome

Jeder kann helfen, was ist los?

Ich habe das Gefühl, dass etwas falsch an der geteletById.click Aufruf, aber ich konnte keine Lösung finden hier beschrieben.

Bitte helfen Sie !!

+0

Es ist ziemlich gut etabliert, dass document.getElementById Werke in Chrom, also muss es etwas mit dem Klick zu tun haben. Wenn Sie auf eines der Listenelemente klicken, was passiert? Wird eine andere JS-Funktion aufgerufen, und wenn ja, können Sie sie einfach zu diesem Zeitpunkt aufrufen, anstatt einen Klick auf das Element zu simulieren. –

Antwort

2

Chrome unterstützt keine click() Elemente. Sie können es wie folgt implementieren:

if(!document.body.click) { 
    HTMLElement.prototype.click = function() { 
     var t = this; 
     do { 
      if(t.onclick) t.onclick(); 
      t = t.parentNode; 
     } while (t); 
    } 
} 

Es ist nur eine Annäherung, da es nicht das Ereignisobjekt richtig, aber zum größten Teil wird handhaben soll dies recht gut funktionieren.

+0

Sorry, ich bin kein Profi, also wo soll ich das hinstellen? –

+0

Überall vor dem Code, der versucht, 'click()' aufzurufen. –

0

Ich denke, dass Sie Tabs nicht klicken müssen, um die Seite zu wechseln.

Sie es mit document.location.href tun können,

function where_from() 
{ 
    if (readCookie('came_from')!="false") 
    { 
     pos=readCookie('came_from'); 
     if (pos=='relaxation') 
      document.location.href = document.getElementById('relaxation').href; 

     if (pos=='recreation') 
      document.location.href = document.getElementById('recreation').href; 
    } 
} 

here is a jsfiddle example wird, dass aus here kopiert.

+0

Ich habe das versucht. Es funktioniert überhaupt nicht. Es wird nicht zum Tab springen. –

+0

@MarcellJarvas Ist es möglich, Ihren ganzen Code zu sehen, sollte es ein anderes Problem in Ihrem Code geben, wenn ich Ihren Code sehe, kann ich versuchen, eine jquery oder nur JavaScript-Funktion zu schreiben, um Ihr Problem zu lösen. – ocanal

+0

Thx, aber Dan Prince hatte Recht, es gibt ein anderes JS dann aufgerufen (wenn Seite geladen oder Tab angeklickt). –

0

wenn document.getElementById('relaxation').click(); funktioniert nicht, dies für Sie arbeiten könnte: $('#relaxation').click();

ex:

$('#relaxation').click(function(){ 

//Onclick do something 

}); 

Um JQuery Support-Dateien Besuch herunterladen: http://jquery.com/

+0

Dies funktioniert nicht auf jeder Webseite, sie brauchen jQuery. –

+0

dann in diesem Beitrag enthalten –

+0

Das funktioniert auch nicht, obwohl ich jQuery-1.4.2 in der Kopfzeile enthalten haben. –