selfclose() und onblur()

mrepox

Erfahrenes Mitglied
Hallo JS'ler

ich habe hier ein Formular welches in einem Popup geöffnet wird.

1. soll dieses popup-formular sich selber schließen, wenn man es mit der maus verläßt,
es also den focus verliert. dabei soll kein submit erfolgen.



2. soll es sich nach betätigen des "submit" buttons selbst schließen und den opener neu laden.

3. alles ohne irgendwelche Hinweise darauf, ob ein fenster geschloßen werden soll oder nicht (IE6)


Alle diese Ansprüche hatte ich bereits verwirklicht und sie klappten reibungslos im FF2.
Im IE6 scheint gar nichts mehr zu klappen.


Hier mal das betroffene Script:

PHP:
<?php
session_start();
include('xxxxx');
include ('xxxxx.php'); 
//prüfen, ob als admin angemeldet
if (!check_auth_user()) {
    login_form();
} else {
if(isset($_SESSION['update'])) //prüfen ob es sich um ein update oder eine neue erstellung handelt
{
// sessoin_vars für update eines datensatz
  $guupdate = $_SESSION['update'];
  $guid = $_SESSION['updateid'];
  $gulinkname = $_SESSION['updatelinkname'];
  $gusitepath = $_SESSION['updatesitepath']; 
  $gucategorie = $_SESSION['updatecategorie']; 
  } 
//timepath für eintrag in db 
$timestamp = time();  
$date = date("d-m-y H:i:s",$timestamp);
// session_vars für neuen datensatz
$gsitename = $_SESSION['sname']; 
$gpath = $_SESSION['showpath']; 
$gext = $_SESSION['ext'];
$site_path = "show_page".$gext;
?>
<html><head><script type="text/javascript">function closepopup() { close();} 
</script><body onBlur="closepopup()"></head>
<?php 
// prüfen ob $_POST['requestpost'] existiert und ungleich "true" ist, wenn nein _SERVER_REQUEST_METHOD löschen(die var läge sonst nach 
// wiederholten POST noch an) 
if(!$_POST['requestpost'] && $_POST['requestpost'] != "true")
unset($_SERVER['REQUEST_METHOD']);
$text_tidy = $_POST['story_text'];
$text = stripslashes($text_tidy);
$text_bb = $text_tidy;
$text_input = htmlentities($text_tidy); 
echo "<div style='margin:0;font-family:Trebuchet MS;'>";
$ausgabe =stripslashes(bb_code($text_bb ,'100'));  
echo $ausgabe;
echo "</div>";
?>
<form action="submit.php" method="post" >
<input type ="hidden" name="story_text" value="<?php echo $text_input; ?>" > 
<input type="hidden" name="requestpost" value="true">
<?php
if($_SERVER['REQUEST_METHOD'] !='POST') { // wenn REQUEST_METHOD ungleich "POST" ist, ist kein submit gewählt und button wird angezeigt 
echo "<input type='submit'  style='border:2px solid #ff0000;background:#eee;margin-top:50px;' value='in DB schreiben' >";   
echo "</form>";     
}
else  //ist REQUEST_METHOD gleich "POST", daten in DB schreiben 
{
// letzte id aus db holen 
include_once('../function_s.php');
$conn = db_connect();
$query = "select * FROM page ORDER  by `id`ASC "; 
              $result = $conn->query($query);
                   while($getid= $result->fetch_assoc())
    {  $id_db = $getid['id'] ;   } 
$id = $id_db +1;
// wenn $guupdate existiert, liegt ein update vor, ansonsten wird ein neuer datensatz geschrieben 
if(isset($_SESSION['update'])) 
    { 
        if (update_page($guid,$text,$gulinkname,$gusitepath,$gucategorie,$date))  
             { 
                ;
                 unset($_SESSION['updateid'],$_SESSION['updatelinkname'],$_SESSION['updatesitepath'],$_SESSION['updatecategorie']);
                 echo "<script type=\"text/javascript\">\n";  
                 echo "opener.location.reload();\n";  
                 echo "self.close();\n";  
                 echo "</script>\n";  
             }           
             else 
             {               
                 echo "session-vars not deleted";
             }
    }             
else
    {
        $publish = "0"; // wenn wert 0, ist datensatz nicht veröffentlicht
        $conn = db_connect();
        $query = "insert into page values

                          ('$id','$text','$gsitename','$site_path','$gpath','$date','$publish','$hardlink')";

        $result = $conn->query($query);

            if (!$result)

                return FALSE;

            else

                 echo "<script type=\"text/javascript\">\n";  
                 echo "opener.location.reload();\n";  
                 echo "self.close();\n";  
                 echo "</script>\n";  
     }
     
}
}
?> 
</body></html>

so wird das popup geöffnet:
PHP:
 function WinOpen()
{ 
window.open('submit.php','popupform','scrollbars=yes,width=650,height=500,left=700,top=60');onMouseOver = popupform.close();
}

im MSIE6 ist es leider nicht möglich den submit-Button zu klicken, das Popup schließt sich ohne ausführung des submits

Kann mir jemand einen Anstoß geben?
 
Zuletzt bearbeitet:
Hi,

PHP:
function WinOpen()
{ 
window.open('submit.php','popupform','scrollbars=yes,width=650,height=500,left=700,top=60');
onMouseOver = popupform.close(); // <<--- Was soll das denn?
}

Welchem Objekt willst Du hier ein onmouseover verpassen?

LG
 
Hallo JS'ler

Da mein erstes Posting etwas undurchsichtig ist hier noch mal meine Frage:

Ich benötige ein Popup mit einem Formular welches bei mouseover oder verlieren des Fokus wieder schließt und auch im MSIE6 funtioniert.

Hier nochmal die Ansprüche ans Popup:
  1. Cross-Browser kompatible
  2. popup schließt beim überfahren mit der Maus
  3. submit Button im Popup bleibt klickbar
  4. keine Warnhinweise ob das popup geschloßen werden darf im IE
  5. popup immer im Vordergrund
Ist das generell möglich und auf welche Weise kann das gelöst werden?
 
Hi,

# popup schließt beim überfahren mit der Maus
# submit Button im Popup bleibt klickbar

Wie soll denn ein Button im Popup klickbar bleiben, wenn es beim Überfahren mit der Maus geschlossen wird? :confused:

Was funktioniert denn bis jetzt und was ist mit meiner Nachfrage?

LG
 

Neue Beiträge

Zurück