000
22.03.2007, 10:22
Diablo_bth
|
hallo, ich hätte gerne eine Funktion die in einem div-tag eine Dialogbox erstellt, wobei man der erstell-Funktion die Art des Dialogs (yes/no, ok, changepass) mitteilt sowie ein callback mit gibt, welcher beim drücken eines Knopfes betätigt wird ... dazu habe ich folgendes versucht:
Funktion zum erstellen der Dialogbox und eine, die aufgerufen wird wenn ein button gedrückt wird:
/* - 'kind' - is one of "yesno" "message" "changepass" - 'title' - text displayed at top of the menu - 'callback' - if 'kind' is "yesno" either callback('yes') or callback('no') will be called if 'kind' is "ok" callback('ok') will be called if 'kind' is "changepass" callback('changepass:<pass>:<re-enter>') or callback('cancel') will be called */ function popupdialog_modal( kind, title, callback ) { var table_head = "<table width=100% height=100% align=center><thead><tr class="graylabel"><td align=center colspan=2>"+title+"</td></tr></thead>"; var table_body = "";
switch(kind) { case "yesno": table_body = "<tbody width=100%>\ <tr>\ <td width=100% align=center>\ <input id="dialog_yes" name="dialog_yes" value="yes" onclick="popupdialog_callback(\'yes\',"+callback+");" class="buttons" type="button">\ <input id="dialog_no" name="dialog_no" value="no" onclick="popupdialog_callback(\'no\',"+callback+");" class="buttons" type="button">\ </td>\ </tr>\ </tbody>"; break;
case "message": table_body = "<tbody width=100%><tr><td width=50% align=center>\ <input id="dialog_ok" name="dialog_ok" value="ok" onclick="popupdialog_callback(\'ok\',"+callback+");" class="buttons" type="button">\ </td></tr></tbody>"; break;
case "changepass": table_body = "<tbody width=100%>\ <tr>\ <td class="tdnoborder">Password</td>\ <td class="tdnoborder">\ <input name="password" type="password" id="password" size=20 />\ </td>\ </tr>\ <tr>\ <td class="tdnoborder">re-enter</td>\ <td class="tdnoborder">\ <input name="password2" type="password" id="password2" size=20 />\ </td>\ </tr>\ <tr width=100%><td colspan=2 width=100% align=center>\ <input id="dialog_changepass" name="dialog_changepass" value="change" onclick="popupdialog_callback(\'changepass:\'+password.value+\':\'+password2.value,"+callback+");" class="buttons" type="button" />\ <input id="dialog_cancel" name="dialog_cancel" value="cancel" onclick="popupdialog_callback(\'cancel\',"+callback+");" class="buttons" type="button" />\ </td></tr>\ </tbody>"; break; }
var _popupdialog = document.getElementById('popupdialog'); _popupdialog.style.visibility = "visible"; _popupdialog.innerHTML = table_head + table_body; }
function popupdialog_callback(code,callback) { var _popupdialog = document.getElementById('popupdialog') _popupdialog.innerHTML = ""; _popupdialog.style.visibility = "hidden";
// if( code == "cancel" || code == "ok" ) // return;
callback( code ); }
im IE7 funktioniert jetzt folgendes:
<a href="javascript: popupdialog_modal('changepass','Neues Passwort', function myf(x) {alert('myf called with: '+x);} );">change password</a>
aber im FF net - gibts in JavaScript irgend eine sinnvolle Funktionalität um Funktionen als Parameter für andere Funktionen zu übergeben?
folgendes Beispiel funktioniert in keinem Browser und ich verstehe net warum:
<script type="text/javascript"> function mycallback(arg) { alert( "mycallback called with: " + arg ); } </script> <a href="javascript: popupdialog_modal('changepass','Neues Passwort', mycallback );">change password</a>
--
|
|
Profil || Suche
|
001
22.03.2007, 10:47
Exec
|
im href="" darf niemals irgendwas mit javascript sein... mich wunderts, dass der IE da was macht.
<a href="" onclick="popupdialog_modal('changepass','Neues Passwort', mycallback );">bla</a>
sollte da eher funktionieren
--
"selbermachen rockt am meisten :D" - -LeJean-
|
|
Profil || Suche
|
002
22.03.2007, 16:42
oxff
|
So ein Quatsch Exec, wenn du es entsprechend mit `javascript:' prefixed, funktioniert das sowohl im FF als auch im IE.
--
mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik
|
|
Profil || Suche
|
003
25.03.2007, 23:14
Exec
|
mhm dächte aber, dass da einige browser rumzicken von wegen popup-blocker und so?
--
"selbermachen rockt am meisten :D" - -LeJean-
|
|
Profil || Suche
|
004
25.03.2007, 23:33
K-Putt
|
Nein, grade wenn das PopUp in einem Link verpackt ist, sieht es der Browser als "erwünschtes" PopUp, und blockt nicht.
Was man auf jeden Fall nicht tun sollte, ist den Href Tag leer zu lassen bzw. ein "#" einzufügen, was die meisten machen. Dadurch springt der Browser immer nach #top, was bei längeren Webseiten nervt. Normalerweise gehört da ein javascript:void(0); rein.
--
Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database
|
|
Profil || Suche
|
005
27.03.2007, 16:50
oxff
|
Hilft nur alles nicht bei seinem Problem weiter.
- Das heisst heutzutage nicht mehr `element.style.visibility = "true";' sondern `element.style.display = "block";' - Poste doch mal, was dir die FF Fehlerkonsole sagt.
--
mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik
|
|
Profil || Suche
|
006
04.04.2007, 12:10
Diablo_bth
|
danke für die hilfreichen Antworten ...
ich hab auch zuerst ein href='#' gemacht ... aber "javascript: void(0)" scheint wohl die bessere wahl zu sein.
aber sollte das nicht href="javascript: void(0);" mit ";" sein?
Lg
--
|
|
Profil || Suche
|