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 = "";... Discussion in 'Webmaster Support, Scripts, etc' started by Spacerat, Jun 24, 2007.

  1. Spacerat
    Spacerat ٩(̾●̮̮̃̾•̃̾)۶ /dev/null
    Joined:
    Dec 25, 2006
    Messages:
    8,597
    Likes Received:
    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 ;)
     
    #1 Spacerat, Jun 24, 2007
  2. alex
    alex killed in action
    Joined:
    Dec 30, 2006
    Messages:
    8,187
    Likes Received:
    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
    Threadstarter
    Joined:
    Dec 25, 2006
    Messages:
    8,597
    Likes Received:
    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
     
    #3 Spacerat, Jun 24, 2007
Thema:

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

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice