Noformējumam ir jābūt atdalītam no satura! Lūk tieši tādēļ mums ir iespēja web-lapas HTML failā glabāt tikai strukturizētu saturu, bet CSS un JavaScript pārvietot uz atsevišķiem failiem.
Ieguvums ir ne tikai "tīrāks” lapas kods, kas atvieglo izstrādi un modificēšanu nākotnē, un ātrdarbību, bet tas ir arī pluss no SEO viedokļa, jo tādi meklētāji kā Google varēs vieglāk indeksēt saturu. Ar CSS viss ir vienkārši un skaidri - glabājam to atsevišķā failā un izvairāmies no "inline” stilu definēšanas (<div style=”…”
).Arī JavaScript var pilnībā atdalīt no lapas satura un ne tikai glabāt to atsevišķos failos, bet arī nelietot tādus event`us kā
onclick
, onmouseover
, onload
u.t.t. JavaScript web-lapā ir papildus funkcionalitāte un nedrīkst
paļauties uz tā atbalstu lietotāja pārlūkprogrammā, jo tas var būt gan
vienkārši atslēgts, gan izfiltrēts, gan netikt atbalstīts mobilajās
ierīcēs.Agrāk mēs to darījām šādi:
<a id="mylink" href="#" title="mylink" onmouseover="something(this);">...</a>
Bet pareiza pieeja šajā gadījumā ir izvairīties no
onmouseover
event`a (tā pat kā no jebkura cita) un atsevišķā javascript failā piemērot vajadzīgo papildus funkcionalitāti šim elementam:document.getElementById('mylink').onMouseOver = function() {
// Kods, kurš izpildīsies pēc peles uzbīdīšanas uz saites
};
Šāda pieeja ir arī nesalīdzināmi parocīgāka, ja vēlamies pievienot papildus funkcionalitāti uzreiz vairākiem elementiem. Tad ir nepieciešams atrast visus šos elementus (piemēram, pēc klases nosaukuma) un piešķirt tiem izpildāmo kodu. Piemērs:
HTML:
<img src="img1.jpg" class="popupImg" alt="attēls1" />
<img src="img2.jpg" class="popupImg" alt="attēls2" />
<img src="img3.jpg" class="popupImg" alt="attēls3" />
JavaScript:
// Izpildam tikai pēc lapas ielādes
window.onload = function(){
// Atrodam visus elementus ar klasi "popupImg"
var nodes = getElementsByClass('popupImg');
for(i=0; i<nodes.length; i++) {
nodes[i].onclick = function() {
// Norādam kas notiks pēc onclick event`a:
alert(this.alt);
};
}
}
// Papildus f-ja, kas atgriež masīvu ar visiem vienas klases elementiem
function getElementsByClass( searchClass, domNode, tagName) {
if (domNode == null) domNode = document;
if (tagName == null) tagName = '*';
var el = new Array();
var tags = domNode.getElementsByTagName(tagName);
var tcl = " "+searchClass+" ";
for(i=0,j=0; i<tags.length; i++) {
var test = " " + tags[i].className + " ";
if (test.indexOf(tcl) != -1)
el[j++] = tags[i];
}
return el;
}
Raksts pārpublicēts no webdev.gold.lv ar autora atļauju.