Lars Kaniok: Geht bei IE aber nicht bei Netscape!

Hallo,

brauche dringend eure Hilfe. Hatte hier einen javascript text gemacht, welcher sich einwandfrei in IE öffnen lässt, jedoch bei netscape herumspinnt. Kann mir bitte jemand helfen.

var cm=null;
document.onclick = new Function("show(null)")
function getPos(el,sProp) {
        var iPos = 20
        while (el!=null) {
                iPos+=el["offset" + sProp]
                el = el.offsetParent
        }
        return iPos

}
function show(el,m) {
        if (m) {
                m.style.display='';
                m.style.pixelLeft = getPos(el,"right")
                m.style.pixelTop = getPos(el,"Top") + el.offsetHeight
        }
        if ((m!=cm) && (cm)) cm.style.display='none'
        cm=m
}

Und weiter im HTML- Text habe ich es ungefähr so:

<tr><td align="left"><a href="beispiel.html" id="d1" onMouseOver="Bildwechsel(2,Highlight1); show(this,ds1);" onMouseOut="javascript:Bildwechsel(2,Normal1)"><img alt="neues beispiel" border="0" height="110" width="366" src="../graphics/beispiel1.gif"></a></td></tr>

<tr><td><div id="ds1" CLASS="submenu" STYLE="display:none; text-align:justify; margin-left:10; margin-right:10;">
<p class="weiss">weiter mit beispieltext</p>
</div>

Danke für eure Hilfe.

PS:Gibt es einen Trick, dass iframes in Netscape funktionieren? Auch das bekomme ich nicht hin.

Thankz a lot, laz!

  1. Hallo,

    el.offsetParent
                    el.offsetHeight

    Die ganzen offset-Eigenschaften sind Eigenschaften des all-Objekte, dass nur der IE unterstützt, weil es eine proprietäre MS Erweiterung ist. Demnach KANN es im Netsacpe und jedem anderen non-MS Browser garnicht klappen.

    PS:Gibt es einen Trick, dass iframes in Netscape funktionieren? Auch das bekomme ich nicht hin.

    Das ist irgendwie nett ;)
    iframe ist ein Feature, dass der Netscape <= 4 einfach nicht unterstützt. Da gibt es auch keinen Trick, um ihm das beizubringen. Das einzigste, was Du machen könntest ist, mit Netsacpe-Layern eine Art iframe zu "simulieren", Du kannst das Ding dann auch scrollbar machen etc. Ist aber sehr viel Arbeit und hilft wirklich nur den (wenigen) Netscape 4 Usern und keinen anderen. Mein Tipp: Lass es einfach sein.

    Viele Grüße...

    Alex :)

    1. Hi,

      nun, ich habe es mit document.getElementById("d1") versucht, es hilft nicht.
      Dann liegt es wohl doch an den offset.parent ....

      Nun, da habe ich ne Frage, ob irgend wer ne Idee hätte, etwas ähnliches in Netscape und IE zum gehen zu bringen ( gutes deutsch ).

      Thankz, laz!

      1. Hallo,

        nun, ich habe es mit document.getElementById("d1") versucht, es hilft nicht.
        Dann liegt es wohl doch an den offset.parent ....

        Sischer, sischer ;) - ist halt MS-Kram

        Der Ansatz ist aber nicht verkehrt. Du mußt versuchen, die Ausrichtung der Layers (<div>) nicht mit proprietären MS-Befehlen sondern sondern nach gültigen Befehlen des DOM auszurichten.

        Auf die einzelnen Layers kannst Du sehr gut mit getElementsById zugreifen. Schau Dir mal http://selfhtml.teamone.de/javascript/objekte/document.htm#get_element_by_id an, da wird die vorgehensweise genau erklärt.

        Viele Grüße und viel Erfolg...

        Alex :)

  2. hi

    sprich' die Objekte mit document.getElementById("d1") an (statt nur d1), dann geht's in Netscape6+, MSIE5+ und vielen anderen.

    PS:Gibt es einen Trick, dass iframes in Netscape funktionieren? Auch das bekomme ich nicht hin.

    also meiner (7er) kann iframe und der 6er auch. Für Netscape 4 bietet sich der Ersatztext irgendwie an, dem User mal vorsichtig zu einem Update zu raten.. Und noch einen Link auf die Datei, die sich im iframe befinden würde. Wenn einer der Netscape 4-User giftig wird, kannst du dem dann die Frage nochmal stellen ;)

    Grüße aus Bleckede

    Kai