Nå mskjoldp,
Nu er scriptet blevet forlænget. Jeg har tilføjet to metoder til scriptet som kan kaldes fra <body onload="" />:
1) disableWarningOnAll()
hvis du kalder denne (<body onload="disableWarningOnAll()" />) invokerer alle knapper (<input type="button" />) og alle links (<a href="" />) ikke warning-beskeden når der klikkes på dem.
2) disableWarningByName(strName)
Hvis du kalder denne (<body onload="disableWarningByName('link')" />) invokerer alle elementer på formen med name="link" ikke warning-beskeden når der klikkes på dem.
Så nu kan du selv vælge om nogen af dem skal invokere warning-beskeden eller om ingen skal. :)
Nedenfor er eksemplet hvor alle knapper og links sættes til ikke at invokere warning-beskeden:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml"> <head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/JavaScript">
var displayWarning = true;
var modeToShowWarning = 'visstatus';
window.onbeforeunload = confirmExit;
function confirmExit()
{
var modeValue = getQueryVariable("mode");
if(displayWarning && (modeValue == modeToShowWarning))
return "Du er ved at navigere væk fra DR Netradio. Osv osv osv....";
displayWarning = true;
}
function disableWarningByName(strName)
{
var links = document.getElementsByName(strName);
for(var i = 0; i < links.length; i++)
disableWarningOnElement(links[i]);
}
function disableWarningOnAll()
{
var input = document.documentElement.getElementsByTagName('input');
var a = document.documentElement.getElementsByTagName('a');
for(var i = 0; i < input.length; i++)
{
if(input[i].type == 'button');
disableWarningOnElement(input[i]);
}
for(var i = 0; i < a.length; i++)
disableWarningOnElement(a[i]);
}
function disableWarningOnElement(elm)
{
if(elm.onclick == null)
elm.onclick = function() { displayWarning = false; };
else
{
var clickEvt = elm.onclick.toString();
var index = clickEvt.indexOf('{');
var subMethod = "displayWarning = false;" + clickEvt.substring(++index, clickEvt.length-1);
elm.onclick = function() { eval(subMethod); };
}
}
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
{
var pair = vars[i].split("=");
if (pair[0] == variable)
{
return pair[1];
}
}
return "";
}
</script>
</head>
<body onload="disableWarningOnAll();">
<table>
<tr>
<td><input type="button" value="Redirect to same page containing a querystring mode=visstatus" onclick="window.location += '?mode=visstatus';" /></td>
</tr>
<tr>
<td><input type="button" name="link" value="leave page without a warning" onclick="window.location = '
http://www.google.com';" /></td>
</tr>
<tr>
<td><a name="link" href="
http://www.google.com">leave page without a warning</a></td>
</tr>
<tr>
<td><input type="button" value="leave page with a warning" onclick="window.location = '
http://www.google.com'" /></td>
</tr>
</table>
</body>
</html>
Håber det er ved at være brugbart nu! :) Og mit svar ligger oppe i mit første indlæg! :)
Mvh.
- Snap