Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: HTML/JS alert ilman kuittausta

Anne [15.01.2010 11:17:31]

#

Jälleen newbie-kysymys, mutta miten koodaisitte alertin (alert(viesti)) tilalle alertin, joka ei vaadi kuittausta, vaan viestin näytettyään sulkeutuu hetken kuluttua itsekseen?

Ajatus, että viesti tulisi statusbaariin johonkin kenttään, on tässä kohden poissuljettu, koska siellä ei ole tilaa.

Kivoja esimerkkejä on minusta esim. koulujen Wilmassa (on kyllä php, meillä html ja js) ja lisäksi olen saanut vinkkejä katsoa facebookin messuja, mutta enpä osaa sieltäkään apinoida.

B_R_H [15.01.2010 11:22:47]

#

Javascriptillä varmaankin tarkoitit?

setTimeout("alert('3 sekkaa!')",3000)

Grez [15.01.2010 11:25:30]

#

Tuo kylläkin toimii niin päin, että se odottaa 3 sekkaa ennen kuin näyttää alertin, joka edelleen vaatii sen kuittauksen.

Metabolix [15.01.2010 11:38:46]

#

Tee ensin viestilaatikko HTML:llä. Jatkon kannalta helpointa on käyttää valmiiksi formatoitua tekstiä (CSS: white-space: pre). Laita laatikko oletuksena piiloon (display: none) ja jollain CSS-luokalla (.visible) näkyviin. JS:n puolella on sitten helppo päivittää sisältö (div.firstChild.nodeValue = teksti) ja näyttää laatikko (div.className = "visible").

<div id="alert">(tekstisolmu)</div>
#alert {
  position: fixed;
  top: 30%;
  left: 30%;
  width: 40%;
  z-index: 10;
  white-space: pre;

  background-color: white;
  color: black;
  padding: 1em;
  border: 2px solid black;

  display: none;
}
#alert.visible {
  display: block;
}
function alert_esiin(teksti, aika) {
  var div = document.getElementById("alert");
  div.className += " visible";
  div.firstChild.nodeValue = teksti;
  if (aika) {
    setTimeout(alert_pois, aika);
  }
}
function alert_pois() {
  var div = document.getElementById("alert");
  div.className = div.className.replace(/\s*\bvisible\b/g, '');
}
window.onload = function() {
  alert_esiin("Hei!\nMonen rivin viesti!\n\nJee!", 5000);
};

Anne [15.01.2010 12:57:57]

#

Kiitos! Tämä oikein hyvä (samanlaista olen yrittänyt, mutta nyt ohje oli selvä).

Yksi lisäkysymys vielä tähän liittyen:

Minulla on div nyt bodyn alussa. Kun näytän viestin, niin div tavallaa aukenee ruudun yläosaan ja koko muu sivu valuu alaspäin. Kun viesti häipyy, niin sivu palaa ylös. Tämä voisi jossain tapauksessa olla cool, mutta nyt haluaisin viestin muun sivun päälle kutakuinkin keskelle näyttöä.

Luulen, että sen saisi CSS-tyyleillä, mutta niissäkin olen newbie enkä esim. hoovereiden tyyleistä osaa päätellä, mikä niissä saa sen viestin tulemaan päälle eikä omaan tilaan. Osaisiko joku vielä neuvoa?

Metabolix [15.01.2010 13:00:51]

#

Katsopa esimerkkiäni. Siinä ei ole kovin monta tyyliä, ja laatikko aukeaa vakiokokoisena suhteellisen keskelle ruutua. (Vanhoilla IE:n versioilla position: fixed ei toimi oikein, joten jos on tarvis tukea niitäkin, täytyy hieman kikkailla.)

Anne [15.01.2010 13:23:08]

#

Olen kopioinut koodin suoraan tyyleineen kaikkineen ja testaan IE 8:lla ( ja vain IE 6:een asti pitää toimia).

Eli tässä on ehkä jotain, joka johtuu käyttämästämmee kehittimestä (lisää omia tagejaan ja laskee prosentteja väärästä componentista - tai ole ehkä sijoittanut sittenkin väärään paikkaan). Selvitänpä sitä. Kiitos!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta