2010-11-20 22 views
2

Dış javascript'i DOM'ın ya da başın dışındaki yerlere konumlandırmak için değerlendirmenin (veya jQuery's getScript'inin bir varyantının) kullanılabileceğini merak ediyordum.getScript veya eval?

var head = document.getElementById("fig"); 

yerine

var script = document.createElement("script"); 
script.text = $(".code").val(); 
head.appendChild(script); 

ile

var head = document.getElementsById("head")[0]; 

ait Ama ne olursa olsun çalışmak için görünmektedir olamaz: denedim. (Kod çalışır, ancak Firebug #fig ve sayfanın sonunda, </body> etiketinin hemen öncesindeki değiştirilen kodu gösterir.

Temel olarak JavaScript araç seti, komut dosyası etiketinin bulunduğu yere göre şeyler oluşturuyor bulunur ve kullanıcı girdisine bağlı olarak javascript'i dinamik olarak değiştirmeye çalışıyorum (bu nedenle yeni harici JS dosyasına atıfta bulunamıyorum - ideal olmayan bir durumu çalıştırmayı tercih ederim).

En kötü durum senaryosunun, kullanıcı girdisini PHP kullanarak bir "yeni" dosyaya kaydetmek ve bu yeni PHP dosyasına işaret eden getScript'i kullanmak olduğunu sanıyorum, ama son derece hacky görünebilir.

Tekrar teşekkür ederiz!

cevap

3

"JavaScript araç takımı", sayfaya çıkış eklemek için document.write veya document.writeln kullanıldığını gösterir mi?

document.write = function(s) { 
    $('#fig').append(s); 
}; 

document.writeln = function(s) { 
    $('#fig').append(s + '\n'); 
}; 

ve sonra yükü ve $.getScript kullanarak komut dosyasını çalıştırın: Eğer öyleyse, doğru konuma içine komut çıkışını eklemek için bu işlevi geçersiz olabilir.

Düzenleme: yapıyor kod eklenir nasıl bağlı olarak daha sağlam yol: bir fikrin

var output = ''; 

document.write = function(s) { 
    output += s; 
}; 

document.writeln = function(s) { 
    output += s + '\n'; 
}; 

$.getScript('URL of script here', function() { 
    $('#fig').append(output); 
}); 
+0

Genius! Sanırım bu, "kutunun dışında düşünmek" ve size bir şapka bahşişinin güzel bir örneği! – Rio