PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : warum funktioniert "window.open" nicht?


Willow
27.05.2005, 07:29:44
eine "function" kann ich in einem meiner scripts auf zwei unterschiedlichen wegen aufrufen -

einmal mit "<a href="javascript:openBetrieb(Betriebsnummer)">

ein andermal

<script type="text/javascript">
<!--
var btrecnr="<?php echo $row[recnr]; ?>";
openBetrieb(btrecnr);
//-->
</script>

(abhängig vom ergebnis einer suche in einer mysql-datenbank --> d.h. wenn auf grund dieser suche nur ein datensatz gefunden wird, soll ein eigenes fenster (mit den betriebsdaten) geöffnet werden;
wenn mehr als ein datensatz gefunden wir, wird das ergebnis aufgelistet und mittels "<a href="javascript:openBetrieb(Betriebsnummer)"> denn der gewünschte betrieb aufgerufen;

soweit so gut.

nur: im zweiten fall - also wenn nur ein datensatz gefunden wird, wird zwar die funktion aufgerufen (habe ich kontrolliert!) - es öffnet sich aber KEIN fenster!

warum???

c4
27.05.2005, 07:34:47
Zeig doch mal ein bisschen mehr Code. Wie wird Funktion aufgerufen (bei einem und mehreren Ergebnissen), wie sieht die Funktion aus.

Das Problem ist vermutlich dieses: PopUps werden anscheinend erst dann geöffnet, wenn die Seite fertig geladen wurde. Mit einem onload im <body> sollte es also klappen.

Willow
27.05.2005, 07:56:52
die entsprechenden code-teile

im HEAD:

<script type="text/javascript">
<!--
function openBetrieb(btrecnr)
{
alert (btrecnr);
url="500.php?btrecnr="+btrecnr;
para="width=600,height=600,left=20,top=20,toolbar=no, dependent=yes, scrollbars=no,status=yes,resizable=no,location=no";
Betriebsdaten=window.open(url,"Betrieb",para);
Betriebsdaten.focus();
}

//-->
</script>


im <body>

(nach query mit einem ergebnis 1 datensatz):
habs jetzt nach deinem tip auf <body onLoad ... > geändert!) geht aber leider auch nicht!

if (mysql_num_rows($bt_result)==1)
{
$bt_row = mysql_fetch_array($bt_result);
echo '<body onLoad="openBetrieb('.$bt_row[recnr]).')">';
} // if num_rows()

c4
27.05.2005, 07:59:17
Auch wenn das alles ziemlich i.O. aussieht: lässt Du Dir vom Browser auftretende JavaScript-Fehler anzeigen?

Willow
27.05.2005, 08:35:36
du meinst in der statuszeile?

da gibts keine reaktion - seltsamerweise.
d.h ess teht dort nur lapidar: "Fertig"

c4
27.05.2005, 08:40:27
Kannst Du die komplette Seite (bei einem Datensatz) mal online stellen? Entweder hier oder da (http://nopaste.php-q.net/).

xabbuh
27.05.2005, 08:51:48
Wie sieht denn der resultierende Quelltext aus? Ist dort überhaupt ein onload imt body-Tag enthalten? Wenn nein, liegt das Problem an deinem PHP- und nicht dem JavaScript-Code.

Willow
27.05.2005, 09:43:16
also komplett der code:


include ("../lib/opendb.php");
include ("../lib/opendb_bib.php");
$qname='%'.$suchname.'%';
$bt_result = mysql_db_query("betriebsarchiv", "SELECT * FROM betriebe WHERE kurzname LIKE'$qname' ORDER BY kurzname");

<head>
<title></title>
<meta name="author" content="Gerhard Mayer">
<link rel="stylesheet" href="../lib/betriebe_partner.css" type="text/css">
<script type="text/javascript">
<!--
function openBetrieb(btrecnr)
{
url="500.php?btrecnr="+btrecnr;
para="width=600,height=600,left=20,top=20,toolbar=no, dependent=yes, scrollbars=no,status=yes,resizable=no,location=no";
Betriebsdaten=window.open(url,"Betrieb",para);
Betriebsdaten.focus();
}

//-->
</script>
</head>


if (mysql_num_rows($bt_result)>1)
{
// auflistung (mehrere datensätze gefunden
echo '<body><br>';
echo 'Folgende Einträge wurden unter dem Suchbegriff <span style="color:#DF0000">... '.strtolower($suchname).' ...</span> gefunden:<br><i>(Klicken Sie auf den Namen, um das Betriebsdatenblatt aufzurufen)</i><br><br>';
echo '<table border="0" span style="font-size:8 pt"><colgroup><col width="150" valign="top"><col width="40" valign="top"><col width="120" valign="top"><col width="150" valign="top"><col width="150" valign="top"><col width="80" valign="top"></colgroup>';
echo '<tr><td><i>Betrieb</i></td><td colspan="2"><i>Ort</i></td><td><i>Telefon</i></td><td><i>eMail</i></td></tr>';
echo '<tr><td colspan="5"><hr></td></tr>';
while($bt_row = mysql_fetch_array($bt_result))
{
$kg_result = mysql_db_query("bibliothek", "SELECT * FROM katastralgemeinden WHERE recnr='$bt_row[ort]'");
$kg_row = mysql_fetch_array($kg_result);
$telefon='0'.$kg_row[vorwahl].'/'.$bt_row[telefon];
if ($bt_row[mobil] !="") $telefon.=' oder '.$bt_row[netz].'/'.$bt_row[mobil];
echo '<tr><td><a href="javascript:openBetrieb('.$bt_row[recnr].')">'.$bt_row[kurzname].'</a></td><td>'.$kg_row[plz].'</td><td>'.$kg_row[ort].'</td><td>'.$telefon.'</td><td><a href="mailto:'.$bt_row[email].'">'.$bt_row[email].'</a></td></tr>';
} // while
} // if num_rows()
else
{
if (mysql_num_rows($bt_result)==1)
{
// betriebsdatenblatt
$bt_row = mysql_fetch_array($bt_result);
echo '<body onLoad="openBetrieb('.$bt_row[recnr].')">';
} // if num_rows()
else
{
echo '<body><br><i><b>Es wurde kein Eintrag unter der Betriebsbezeichnung <span style="color:#DF0000">'.$suchname.'</span> gefunden.</b></i>';
}
}
$db_close=@MYSQL_CLOSE($archiv);
$db_close=@MYSQL_CLOSE($db);

</body>
</html>

c4
27.05.2005, 09:45:13
1) Bitte nutze [php ]/[/php ], [code ]/[/code ] oder [html ]/[/html ] !
2) Wir wollen den Quelltext aus dem Browser

Willow
27.05.2005, 11:10:43
aus dem browser:


<head>
<title></title>
<meta name="author" content="Gerhard Mayer">
<link rel="stylesheet" href="../lib/betriebe_partner.css" type="text/css">

<script language="JavaScript">
<!--

function SymError()
{
return true;
}

window.onerror = SymError;

var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
return (new Object());
}

window.open = SymWinOpen;

//-->
</script>

<script type="text/javascript">
<!--
function openBetrieb(btrecnr)
{
alert (btrecnr);
url="500.php?btrecnr="+btrecnr;
para="width=600,height=600,left=20,top=20,toolbar=no, dependent=yes, scrollbars=no,status=yes,resizable=no,location=no";
Betriebsdaten=window.open(url,"Betrieb",para);
Betriebsdaten.focus();
}

//-->
</script>
</head>

<body onLoad="openBetrieb(171)"></body>
</html>
<script language="JavaScript">
<!--
var SymRealOnLoad;
var SymRealOnUnload;

function SymOnUnload()
{
window.open = SymWinOpen;
if(SymRealOnUnload != null)
SymRealOnUnload();
}

function SymOnLoad()
{
if(SymRealOnLoad != null)
SymRealOnLoad();
window.open = SymRealWinOpen;
SymRealOnUnload = window.onunload;
window.onunload = SymOnUnload;
}

SymRealOnLoad = window.onload;
window.onload = SymOnLoad;

//-->
</script>

c4
27.05.2005, 11:11:43
1) Bitte nutze [php ]/[/php ], [code ]/[/code ] oder [html ]/[/html ] !
--> http://www.selfphp.de/forum/misc.php?do=bbcode#html