Avatar billede jakand Nybegynder
03. oktober 2005 - 21:08 Der er 8 kommentarer og
1 løsning

prompt() grim i IE

Når jeg kalder Javascripts prompt funktion, har IE en dårlig vane med at lave vinduet øverst i venstre hjørne, og der kan desuden kun stå to liniers tekst.
Kan det ikke lade sig gøre at centrere prompt vinduet og skrive lidt mere tekst i det?
Avatar billede olebole Juniormester
03. oktober 2005 - 21:46 #1
<ole>

Nej, den kan ikke styles

/mvh
</bole>
Avatar billede horsmark Nybegynder
03. oktober 2005 - 21:48 #2
du kan bygge din egen ;-)


<div id="prompt" style="display:none;">
<span id="prompt_question"></span> <input type="text" id="prompt_input"><input type="button" onClick="returnPrompt()" value="ok">
</div>

<script type="text/javascript">

function prompt(sQuestion){
  document.getElementById('prompt_question').innerHTML = sQuestion
  document.getElementById('prompt').style.display = 'block'
}

function returnPrompt(){
  document.getElementById('prompt').style.display = 'none'
  alert("Du svarer "+  document.getElementById('prompt_input').value )
}

prompt("Har du set SiteMark.net CMS ?")

</script>
Avatar billede horsmark Nybegynder
03. oktober 2005 - 21:48 #3
Det er dog en total skrabet version der nok liiiige skal pyntes på men men med lidt kretiv tænkning kan dette godt lade sig gøre :-)
Avatar billede olebole Juniormester
03. oktober 2005 - 21:53 #4
Hvis det kun er IE's promt, der er et problem, ville jeg nok bruge showModalDialog i stedet:
  http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/showmodaldialog.asp

Evt:
  if (window.showModalDialog) {
    // brug showModalDialog
  } else {
    // brug alm. promt
  }
Avatar billede olebole Juniormester
04. oktober 2005 - 01:10 #5
<script type="text/JavaScript">
function myPrompt(msg, val) {
    var ret = null;
    if (window.showModalDialog) {
        var args = {"msg":msg, "val":val};
        ret = window.showModalDialog("prompt.html?u="+new Date().getTime(), args, "dialogWidth:315px;dialogHeight:150px;edge:Raised;center:Yes;help:No;resizable:No;status:No");
    } else {
        ret = prompt(msg, val);
    }
    return ret;
}
</script>

<button onclick="alert( myPrompt('blabla\n- og en linje mere ...', 'noget') )">TEST</button>
<button onclick="alert( myPrompt('blabla') )">TEST</button>

- og en fil, der hedder 'promt.html':

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Så svar mig dog ...!!!</title>
<style type="text/css">
body, html {
    height: 100%;
    margin: 0;
    background: buttonface;
}
div {
    padding: 16px;
}
table {
    border-collapse: collapse;
    width: 100%;
}
td {
    font: 11px tahoma, sans-serif;
    vertical-align: top;
}
input {
    font: 11px tahoma, sans-serif;
    margin: 8px 0;
}
button {
    width: 70px;
}
.btns {
    text-align: center;
}
#response {
    width: 100%;
}
</style>
<script type="text/JavaScript">
window.returnValue = null;
var resp, txt;
function myClose() {
    window.returnValue = resp.value;
    window.close();
}
window.onload = function() {
    var args, captionHeight = 150-document.documentElement.offsetHeight;
    resp = document.getElementById("response");
    txt = document.getElementById("msgTxt");
    args = window.dialogArguments;
    resp.value = (args.val)? args.val : "";
    txt.innerHTML = args.msg.replace(/\n/g,"<br>");
    this.dialogHeight = (document.getElementsByTagName("div")[0].offsetHeight+captionHeight) + "px";
}
</script>
</head>
<body>

<div>
<table>
<col style="width:45px">
<tr>
    <td><img src="icon.gif" width="32" height="32"></td>
    <td id="msgTxt">&nbsp;</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td><input id="response" type="text"></td>
</tr>
<tr>
    <td class="btns" colspan="2"><button onclick="myClose()">OK</button>&nbsp;&nbsp;<button onclick="window.close()">Cancel</button></td>
</tr>
</table>
</div>

</body>
</html>

- så skal du bare lave en ikon på 32*32px, så ligner den
Avatar billede olebole Juniormester
04. oktober 2005 - 01:15 #6
- og måske, du skal give den lidt ekstra line-height:

td {
    font: 11px/1.5em tahoma, sans-serif;
    vertical-align: top;
}
Avatar billede jakand Nybegynder
04. oktober 2005 - 16:58 #7
Endte med at benytte en lidt ændret version af oleboles forslag, da jeg ville indføre en dropdown menu i vinduet.
Avatar billede horsmark Nybegynder
04. oktober 2005 - 19:04 #8
yes den er også mere pæn ( og mindre xbrowser *GG*)
Avatar billede olebole Juniormester
04. oktober 2005 - 23:48 #9
- tværtimod er den nok så x-browser, den overhovedet kan blive

if (window.showModalDialog) {

} else {

}

De, der ikke understøtter 'window.showModalDialog', får en alm. JS-prompt, så deeeet ...  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester