Standardfehler: Script funzt im IE, im FF u.a. aber nicht.

Diskutiere und helfe bei Standardfehler: Script funzt im IE, im FF u.a. aber nicht. im Bereich Webmaster Support, Scripts, etc im SysProfile Forum bei einer Lösung; Hallo! Ich habe ein kleines Script hier, welches im IE problemlos funzt, allerdings im FF nicht. Es läuft wie folgt ab: var open_layer = "";... Dieses Thema im Forum "Webmaster Support, Scripts, etc" wurde erstellt von Spacerat, 24. Juni 2007.

  1. Spacerat
    Spacerat ٩(̾●̮̮̃̾•̃̾)۶ /dev/null
    Registriert seit:
    25. Dezember 2006
    Beiträge:
    8.597
    Zustimmungen:
    196
    Name:
    Christian
    1. SysProfile:
    11226
    Steam-ID:
    Spacerat2911

    Hallo!

    Ich habe ein kleines Script hier, welches im IE problemlos funzt, allerdings im FF nicht. Es läuft wie folgt ab:
    Code:
    var open_layer = "";
    function show_layer(layerid)
    {
    	if ( open_layer != "" ) document.getElementById(open_layer).style.display = "none";
    	var layer = document.getElementById(layerid);
    	layer.style.display = "inline";
    	layer.style.left = event.x;
    	layer.style.top = event.y;
    	layer.style.position = "absolute";
    	open_layer = layerid;
    }
    function hide_layer(layerid)
    {
    	if ( open_layer != "" )	inter = setInterval("quick_close()", 1000);
    }
    function quick_close()
    {
    	document.getElementById(open_layer).style.display = "none";
    	open_layer = "";
    	window.clearInterval(inter);
    }
    Dies ist der Layer, der aufgerufen werden soll:

    Code:
    <div id="litem{shop_results_liste.item_id}" style="display: none;" onmouseover="window.clearInterval(inter)" onmouseout="hide_layer('litem{shop_results_liste.item_id}')">
      <form method="POST" action="item.php?item={shop_results_liste.item_id}">
      <table border="0" cellspacing="0" cellpadding="0" class="side" width="185px">
        <tr>
          <td><img src="template/images/div_table_head.png" border="0" alt=""></a></td>
        </tr>
        <tr>
          <td class="lr">
            <p>In den Warenkorb legen:<br /><br />{shop_results_liste.item_name}</p>
            <input type="text" value="0" size="3" maxlength="2" name="itemanzahl"><input type="hidden" value="{shop_results_liste.item_id}" name="itemid"><input type="hidden" name="btr" value="1"> <input type="submit" value="OK">
            <br /><br /><p align="center"><a onClick="quick_close('litem{shop_results_liste.item_id}')">Schlie&szlig;en</a></p>
          </td>
        </tr>
        <tr>
          <td><img src="template/images/table_bottom.gif" alt=""></td>
        </tr>
      </table>
      </form>
    </div>
    
    und dies die "Funktion", die das Layer aufrufen soll:

    Code:
    <a onClick="show_layer('litem{shop_results_liste.item_id}')" onmouseout="hide_layer('litem{shop_results_liste.item_id}')">In den Warenkorb</a>
    Ich habe hier mal zwei Beispielscreens, 1x, wie es im IE aussieht (richtig) und 1x, wie es im FF aussieht. Der FF öffnet den layer, schließt ihn allerdings nicht mehr automatisch nach 1 Sekunde über das setTimeout, auch nicht, nachdem ich im Layer auf Schliessen klicke.
    Der Klick auf "In den Warenkorb" soll das Layer öffnen und es nach 1 Sekunde beim Mouseout schließen, ausser, der Mauszeiger ist auf dem Layer, dann entsteht der clearTimeout. (bzw soll).
    die variable "event" wird durch ein externes script (tooltip-script von walter zorn) bestimmt, da ich das mit dem Mauszeiger irgendwie nicht hinbekomme, evtl. liegt mein Problem auch da ran :(
    Alles, was in { und } geschrieben ist, sind Template-Variablen, die werden durch Werte ersetzt, die aus der Datenbank gelesen werden.
    Wäre wirklich über jede Hilfe froh!
    Die Screens nun:

    [​IMG]
    [​IMG]


    Vielen Dank schon einmal :)

    sollten Angaben fehlen, fragt mich ruhig ;)
     
  2. alex
    alex killed in action
    Registriert seit:
    30. Dezember 2006
    Beiträge:
    8.187
    Zustimmungen:
    282
    1. SysProfile:
    63644
    2. SysProfile:
    18897
    40873

    ich kann dir da jetzt leider nicht wirklich weiterhelfen, da meine webseiten-programmierkünste nicht so gut sind ^^

    aber vllt hilft das hier, da wird ein ähnliches thema behandelt ;)
    http://www.supportnet.de/listthread/1150864
     
  3. Spacerat
    Spacerat ٩(̾●̮̮̃̾•̃̾)۶ /dev/null
    Themenstarter
    Registriert seit:
    25. Dezember 2006
    Beiträge:
    8.597
    Zustimmungen:
    196
    Name:
    Christian
    1. SysProfile:
    11226
    Steam-ID:
    Spacerat2911

    danke alex, daraus werd ich nur nicht wirklich schlau ^^"
    Habe jetzt anhand eines Users aus der ajax-community das aus dem Script gemacht:

    Code:
    JavaScript:
    
    <script type="text/javascript">
    mylayerhandler = { //new object
     open_layer: '',
     interval: '',
    
     show_layer: function (layerid) {
    	window.clearInterval(mylayerhandler.interval);
            mylayerhandler.interval = '';
    	if ( mylayerhandler.open_layer != "" ) document.getElementById(open_layer).style.display = "none";
    	var myLayer = document.getElementById(layerid);
    	myLayer.style.display = "block";
    	myLayer.style.left = event.x;
    	myLayer.style.top = event.y;
    	mylayerhandler.open_layer = layerid;
            },
    
     hide_layer: function(layerid) {
    	if ( mylayerhandler.open_layer != "" ) mylayerhandler.interval = window.setInterval("mylayerhandler.quick_close()", 1000);
            },
    
     quick_close: function() {
    	document.getElementById(mylayerhandler.open_layer).style.display = "none";
    	mylayerhandler.open_layer = "";
    	window.clearInterval(mylayerhandler.interval);
    	mylayerhandler.interval = '';
            }
     }
    </script> 
    Code:
    Layer:
    
    <div id="litem{shop_results_liste.item_id}" style="display: none; position: absolute;" onmouseover="window.clearInterval(mylayerhandler.interval)" onmouseout="mylayerhandler.hide_layer('litem{shop_results_liste.item_id}')">
      <form method="POST" action="item.php?item={shop_results_liste.item_id}">
      <table border="0" cellspacing="0" cellpadding="0" class="side" width="185px">
        <tr>
          <td><img src="template/images/div_table_head.png" border="0" alt=""></a></td>
        </tr>
        <tr>
          <td class="lr">
            <p>In den Warenkorb legen:<br /><br />{shop_results_liste.item_name}</p>
            <input type="text" value="0" size="3" maxlength="2" name="itemanzahl"><input type="hidden" value="{shop_results_liste.item_id}" name="itemid"><input type="hidden" name="btr" value="1"> <input type="submit" value="OK">
            <br /><br /><p align="center"><a onClick="mylayerhandler.quick_close('litem{shop_results_liste.item_id}')">Schlie&szlig;en</a></p>
          </td>
        </tr>
        <tr>
          <td><img src="template/images/table_bottom.gif" alt=""></td>
        </tr>
      </table>
      </form>
    </div>
    Code:
    Öffnender Link:
    
    <a onClick="mylayerhandler.show_layer('litem{shop_results_liste.item_id}')" onmouseout="mylayerhandler.hide_layer('litem{shop_results_liste.item_id}')">In den Warenkorb</a>
    Vllt. sieht das für einige besser aus XD
     
Thema:

Standardfehler: Script funzt im IE, im FF u.a. aber nicht.

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden