Problém – payload.js a Opera

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ansorge
Člen | 9
+
0
-

Zdravím, mam tu problém a už nevím jak s nim hnout.
V prohlížečích IE 8 a Firefox 3.6.9 mi to funguje a v Opeře 10.62 z nepochopitelného důvodu ne.

V PHP potřebuji zavolat javascriptovou funkci. Volanou funkci předávám pomocí payload->js:

<?php
        $this->presenter->payload->js = "pokus();";
?>
<script>
function pokus(){
    alert('funkce Pokus');
    alert(document.getElementById('el_id').innerHTML);
}
</script>

V IE a ve Firefoxu se bez problému vypíše obsah elementu „el_id“. Ale v Opeře dostanu chybu:

Uncaught exception: TypeError: Cannot convert ‚document.getElementById('el_id‘)' to object

Když alerty z funkce odstraním, tak Opera ztratí obsah a získám prázdnou, bílou stránku. Proto asi nemůže funkce getElementById ani najít ten element.

Jestli někoho napadá čím by to mohlo být budu moc vděčný.

Jirka

PHP: 5.3.0
Nette:

Ondřej Mirtes
Člen | 1536
+
0
-

Zkus to v jQuery, třeba má Opera nějaký bug.

ansorge
Člen | 9
+
0
-

V jQuery jsem to zkoušel, a výsledek je stejný.
Zvláštní je, že to v té Opeře vrací bílou stránku.
Že tam nezustane to co tam bylo jako v IE či F.

jtousek
Člen | 951
+
0
-

@ansorge:

Kdysi jsem narazil na podobný bug v Opeře, ale jednalo se o iframe. Vyřešil jsem to pomocí setTimeout(function(){}, 100);.

Nejsem si jistý, zda jde o tutéž chybu, zkus to a uvidíš.

ansorge
Člen | 9
+
0
-

Bohužel setTimeout nepomohl, ale i tak díky za pomoc.
Mě už fakt nenapadá jak to vyřešit.

Jirka