function modalDialogShow(url,width,height){
if (window.showModalDialog) {
var returnValue = window.showModalDialog(url,"","dialogWidth:"+width+"px;dialogHeight:"+(height+42)+"px");
return returnValue;
}
else {
var left = screen.availWidth/2 - width/2;
var top = screen.availHeight/2 - height/2;
activeModalWin = window.open(url, "", "width="+width+"px,height="+height+",left="+left+",top="+top+",modal=yes");
}
}
function confirmDelete(confirmText, pageTitle, baseURL, eventTarget){
var returnValue= false;
returnValue = modalDialogShow(baseURL+'modalpageshow.aspx?page='+escape('confirmDelete.aspx?confirmText='+confirmText)+'&pageTitle='+escape(pageTitle),380,125)
if(returnValue){
return true
}
return false;
}
function deleteDo(){
return true;
}
Eftersom Firefox inte hanterar returnValue så i sidan som öppnas i popupfönstret kör du funktionen deleteDo()
Men det funkar inte eftersom firefox redan har fått return false efter som den kör igenom hela confirmDelete funktionen och inte väntar på att fönstret ska stängas först.
Hur löser jag detta? Jag måste få min funktion att returnera true till länken.
I den översta funktionen returnerar du ett värde om showModalDialog stödjs. Detta stycke körs inte i FF varför else-satsen hoppas in i och där returneras ingenting. Varför inte lägga till return activeModalWin så att modalDialogShow()s returnvärde evalueras till sant?
<a onclick="return confirmDelete(...,'{loc:location,href:this.href}')" href="__dopostback('blbla','')"></a> //a.href-värdet kan ställa till det
function confirmDelete(...,props)
{
if (window.showModalDialog){
showModalDialog('...',props,'...'); //du kanske vill använda window.open även här(?)
} else {
window.open(...);
}
return false;
}
/* popupfönstret */
<form onsubmit="return submitForm()"...
function submitForm()
{
if (window.showModalDialog){
window.dialogArguments.loc.href = window.dialogArguments.href;
window.close();
} else {
//ingen dialogArgs här, kanske fånga upp värdet i frågesträngen med unescape()
}
}
problemet är att på ASP.NET sidor så är det bara ett formulär och det är flera olika formulärfunktioner i den. Den lösning som du redovisar ovan har jag använt mig av på traditionella asp-sidor. Men med postback i asp.net blir det svårare.