ugrás a tartalomhoz

Archívum - Aug 16, 2008

IE innerHtml: nem jelenik meg a záró tag.

demo · 2008. Aug. 16. (Szo), 23.17
Sziasztok!

Mikor alerttel kiiratom a html kódját:
alert(document.getElementById('elemid').innerHTML);
IE6(7?)-ban nem jelenik meg néhol a lista elemek záró tagje.
Ezt írja...
<ul>
<li>listaelem
<li>listaelem
<li>listaelem
<li>listaelem </li>
(az a space is nem tudom mi)

Kódom valid strict 1.0.
Egyes lista elemeknél jól írja máshol rosszul, teljesen random számomra nem találok benne mintát.

Valaki találkozott már ilyennel?

köszi
 

Safari html-css bug...

NetBandita · 2008. Aug. 16. (Szo), 14.44
Sziasztok!

Egyelőre csak localhoston vágtam bele egy szimpla XHTML-CSS honlapszerkesztésbe, mely FF, Opera és IE7 alatt úgy muzsikál, ahogy azt kell neki. A CSS és a HTML fájl valid (bár a stíluslapban egy font color és egy bg-color hiba van, de ez most totál lényegtelen).

A kérdésem az, mennyire vegyem komolyan a Safari böngészőt? Elég csúnya hibát ad (tulajdonképpen a tartalmi rész (menü + content) a body-tól jobbra helyezkedik el azon kívül). Esetleg általatok ajánlott cikkeket tudtok mutatni a Safari szabványkövetési nehézségeiről?

Visszanéztem 7-8 oldalt a fórumban, nem találtam hasonló című topikot, ezért szerintem lehet aktualitása ennek a témának.
 

Php Templatező készítése

inf · 2008. Aug. 16. (Szo), 00.12
Sziasztok!

Egy egyszerű templatezőt szeretnék csinálni az oldalamhoz phpban, nem szeretnék semmi extrát, mint SMarty, vagy ilyenek, csak nagyon alap dolgokat:
foreach, if-else, esetleg switch, de az már extra..
Az egész úgy indult, hogy eredetileg mysqlhez írtam egy sql statement templatezőt, aztán kicsit belegondoltam, hogy jobban járok, ha csinálok egy sima templatezőt, és abból extendelem ki a db_statement objectemet. Ezért bindParams, compile, meg ilyeneket a függvények nevei. Ami most megvan az így néz ki:

class Template
{
	protected $pattern="{\$([\w_]+)}";
	public function __construct($template,$pattern=null)
	{
		$this->template=$template;
		$this->params=array();
		$this->cache=null;
		if ($pattern)
		{
			$this->pattern=$pattern;
		}
	}
	
	public function bindParam($key,$value)
	{
		$this->params[$key]=$value;
		$this->cache=null;
		return $this;
	}
	
	public function bindParams($source)
	{
		foreach($source as $key => $value)
		{
			$this->bindParam($key,$value);
		}
		return $this;
	}

	protected function replace_template($key)
	{
		return $this->params[$key];
	}
	
	public function compile()
	{
		if (!is_string($this->cache))
		{
			$this->cache=preg_replace("/".$this->pattern."/e",'$this->replace_template(\1)',$this->template);
		}
		return $this->cache;
	}
	
}
Ezt szeretném kicsit továbbfejleszteni, hogy egy foreach kezelést is el tudjon végezni.

A problémám abban van, hogy ez a mostani rész a compile-ban a replace_template metódust hívja meg minden egyes elemrem, és ez nekem azért hasznos, mert így nem kell kiescapelnem a külső forrásból jövő adatokból azokat a részeket, amik ugyanolyanok, mint ami a változókat kéri le. Például ha valaki {$pista} változót egy olyan stringre állítja, hogy "{$zsuzsi}", akkor azt nyilván escapelni kell abban az esetben, ha a feldolgozó kód többször is áthaladhat afölött a rész fölött.