Cytat(dark_root @ 28.08.2010, 19:46:04 )

ale click() do href nie działa na ff. Są jakieś inne, działające sposoby?
rzeczywiście ;D - a dawniej sporo półautomatów popisałem i jakoś o tym zapomniałem - ale po rozwiązanie wystarczy zerknąć na stronę manualla js mozilli:
element.clickprzejrzałem metody obiektu [for(var $key in $ob)...] i nie znajdując click() znalazłem metodę dispatchEvent() [jakoś jej nigdy nie używałem i przy tym problemie nie trzeba z niej kożystać - zależy które rozwiązanie wybierzesz]...
w kodzie daję 2 gotowe rozwiązanie także z użyciem event.initMouseEvent i podpięciem do element.dispatchEvent()... w kodzie są też podpięte na 2 sposoby zdarzenia onclick coby potwierdzić, iż kliknięcie zostało za symulowane [ZAPEWNE TO DO JAKIEGOŚ PÓŁ AUTOMATU POTRZEBUJESZ]...
jeśli potem będziesz chciał przekierować stronę na inny adres skorzystasz po prostu z document.location=klikany_link.getAttribute('href'); -> czytaj komentarze w przykładzie...
[edit] - a rozdzieliłem dla czytelności na 2 kody ;p
<a id="klik" href="http://www.google.pl/">samo się na google kliknie za 2s
</a> <script type="text/javascript"> var klikany_link=document.getElementById('klik');
function przygotuj_zdarzenia_1($el){
$el.onclick=function(e){alert('kliknięty na onklick:'+e.target.parentNode.getAttribute('href'));};
$el.addEventListener('click', function(e){alert('adeventlistener:'+e.target.parentNode.getAttribute('href'));}, false);
}
function mojaWlasnaSymulacja_by_zegarek84($el){
var input = document.createElement('input');
input.type='submit';
$el.appendChild(input);
input.click();
}
function jakas_po(){
przygotuj_zdarzenia_1(klikany_link);
mojaWlasnaSymulacja_by_zegarek84(klikany_link);
//PRZEKIEROWAĆ POTEM MOŻESZ NP. W TEN SPOSÓB:
// document.location=klikany_link.getAttribute('href');
}
setTimeout(jakas_po, 2000); //czas jest w milisekundach dlatego 20000
<a id="klik" href="http://www.google.pl/">samo się na google kliknie za 2s
</a> <script type="text/javascript"> var klikany_link=document.getElementById('klik');
function przygotuj_zdarzenia_2($el){
$el.onclick=function(e){alert('kliknięty na onklick:'+e.target);};
$el.addEventListener('click', function(e){alert('adeventlistener:'+e.target);}, false);
}
function simulateClick($el) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, false, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
$el.dispatchEvent(evt);
}
function jakas_po(){
przygotuj_zdarzenia_2(klikany_link);
simulateClick(klikany_link);
//PRZEKIEROWAĆ POTEM MOŻESZ NP. W TEN SPOSÓB:
// document.location=klikany_link.getAttribute('href');
}
setTimeout(jakas_po, 2000); //czas jest w milisekundach dlatego 20000
jednym słowem nie ma rzeczy nie możliwych... masz łeb i h* to kombinuj ;p