En kund har bestämt sig för att bygga en tjänst på sin hemsida för att presentera en centrerad pop-up. Du har fått i uppdrag att skriva denna rutinen med javascript. Kunden vill också kunna använda denna pop-up-funktion för att bestämma bredd och höjd för att kunna återanvända den på andra sidor. Skriver ett inlägg i Pellesofts forum där jag frågar om någon kan hjälpa mig? ;) Självklart - men det är inte upp till mig att avgöra, jag bara hittar på uppgifter *ler*. Den rutin jag har på pellesoft är: Med tanke på att popupblockers blir vanligare och vanligare idag hade det väl varit på sin plats att kolla om objketet win verkligen blir ett popupfönster och om så inte är fallet skicka upp en alert som meddelar detta. När det gäller popupblockern i Firefox, så tillåter den normalt fönster som öppnas efter klick på en länk eller knapp, däremot inte sådana som flyger upp automatiskt när en sida laddas.veckans nöt #9 - javascript popup
Javascriptet kommer laddas via en include på varje sida så du behöver bara skriva funktionen och visa ett exempel på hur du använder den. Hur gör du?Sv: veckans nöt #9
Sv: veckans nöt #9
<script type="text/javascript">
function Popup(url, width, height)
{
this.url = url;
this.width = width || 400;
this.height = height || 300;
}
Popup.prototype.show = function ()
{
var left = (screen.width - this.width)/2;
var top = (screen.height - this.height)/2;
window.open(this.url, "",
"nochrome,width="+this.width+",height="+this.height+",left="+left+",top="+top);
}
var p = new Popup("http://www.pellesoft.se");
</script>
<button onclick="p.show()">Öppna popup</button>
Sv: veckans nöt #9
<code>
openCenteredWindow('/table.aspx',250,600,'tabellverk',' scrollbars=no, resizable=no, titlebar=0');
// för att öppna ett fönster centrerat på skärmen
function openCenteredWindow(url, height, width, name, parms) {
if (height <= 1) { height = Math.floor(screen.height * height); }
if (width <= 1) { width = Math.floor(screen.width * width); }
var left = Math.floor( (screen.width - width) / 2);
var top = Math.floor( (screen.height - height) / 2);
var winParms = "top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
if (parms) { winParms += "," + parms; }
var win = window.open(url, name, winParms);
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
return win;
}
</code>Sv:veckans nöt #9
Nått i stil med:
<code>
var win = window.open(url, name, winParms);
if(win==null)
alert('Din webbläsare tillåter inte popupfönster. Kontrollera inställningarna och försök igen.');
else
{
try{ win.window.focus(); }
catch(e){ /* Do nothing */ }
return win;
}
</code>Sv: veckans nöt #9