2010-11-22 23 views
3

Çok garip, birisi bana yardımcı olabilir. Burada hızlı bir test fonksiyonudur:innerHTML kapanış işaretini kaldırmadan kaldır

function test_function(){ 
    code = '<img src="http://www.myimage.com/img.jpg" alt="image" />'; 
    alert(code); 
    document.getElementById('test').innerHTML = code; 
    alert(document.getElementById('test').innerHTML); 
} 

yukarıdaki kodu Running birinci uyarısında /> gösterecektir, ama ikinci uyarı, sadece > gösterir etmez. Bu nedenle, .innerHTML no'lu dizgiye, eğik çizginin dışına çıkıntı yapmak gibi görünmektedir. Bunun olmasını engellemek için herhangi bir fikrin var mı? Doğrulama için eğik çizgiye ihtiyacım var.

+1

Ne tür doctype kullanıyorsunuz? – Dror

+0

Hangi tarayıcılarla karşılaşıyorsunuz? – JAL

+0

Tarayıcı eğik çizgiyi kaldırırsa, bu tür bir iletimde olması gerekmez. –

cevap

6

İkinci uyarı, tarayıcının görüntü öğenizin dahili temsili olarak ne kullandığını size gösterir. Doğrulama için eğime ihtiyacınız yoktur. Doğrulama her zaman sayfanızın kaynağıyla ilgili olduğundan, doğrulayıcılar dinamik olarak DOM'a öğe ekleyen JavaScript'i çalıştırmaz. Aslında, çoğu tarayıcı, XHTML'yi belgenin XML temsilciliği olarak değil, HTML ile aynı şekilde ele alır. Yalnızca XHTML belgenizi MIME türünde application/xhtml+xml, tarayıcılarına gönderdiğinizde, bazı tarayıcıları sayfanızı XML ayrıştırıcısını kullanarak oluşturur. Ayrıca bkz. Ian Hickson'ın article numaralı makalesine de bakabilirsiniz.

+0

Sayfanın kaynağını ajax sayfa düzenleyicisine kaydetmek için innerHTML gibi şeyler kullanmıyorsanız, bu iyi ve güzel. – David

+0

Doğru, bu yüzden bu mimi kullanırsam, bazı tarayıcılarda çalışır. Eminim ateşte bir şeye ihtiyacım var ve bu mimi kullanarak başka bir şey bulamadı. – David

+0

@David - HTML 5'e buradan geçiş yapamaz mısınız? [Kendi kendine kapanan etiketleri] kullanmadığınız zaman çok daha bağışlayıcıdır (http://dev.w3.org/html5/spec/Overview.html#elements-0). –