2011-05-26 20 views
10

Ben FireBug Lite bakıyor ve harici bir komut dosyası içine seçenekleri geçmek oldukça serin tekniği kullandığını gördüm. Herkes bu tekniğin adının biliyorum ve nerede ben ya da nasıl çalıştığı hakkında daha fazla bilgi bulabilirsiniz eğer JSON Nesne - Soğuk Tekniği

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"> 
{ 
    overrideConsole: false, 
    startInNewWindow: true, 
    startOpened: true, 
    enableTrace: true 
} 
</script> 

merak ediyordum. Oldukça havalı görünüyor. Teşekkürler!

+0

JSONP bu benzer mi? http://en.m.wikipedia.org/wiki/JSONP – mason

cevap

4

Düşündüğün olabileceğinden otomatik değişken geçer-teknik değil. does

Tüm bunların kod onlar normal ifade (/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;) için src niteliği karşılaştırarak (kodlarını yüklenen birini bulana kadar.

o etiketi bulursa tüm script etiketleri üzerinden döngü, sadece script etiketinin .innerHTML alır ve bunu değerlendirir.

biz script etiketi belirtir bulgunun garantili yöntem yok gibi bu (isimsiz) tekniğiyle, gerçek dünyada alakalı değil sanırım bizim kütüphane (özellikle tüm komut dosyalarının l üzerinde tek bir komut dosyasına birleştirilmesi yaygındır) ive sunucuları).

Dahası, ben çapraz tarayıcı Bunun ne kadar üzerinde şüphelerim var; kesinlikle devletler spec tarafından gitmez olarak:

söyledi (ve bu konuda düşünce) olması: spec tarayıcı hem yorumlamak gerektiğini belirtmektedir. Ancak bu, bu teknikle alakalı değildir. script içerik innerHTML içeri okunur gibi tarayıcı, hem yorumlamak zorunda değildir (o içerikte okuduğunda bile ve, yine de herhangi bir zarar vermez). Tarayıcı, teknik özelliklere uygun olduğu sürece ve URI'yi (tüm tarayıcıların yaptığı) yükledikçe, sorun yoktur! (kütüphanenizin ait olduğu script etiketini bilmemek/garanti etmemek dışında).

komut

harici bir dosya YAZI elemanının içeriği içinde veya tarif edilebilir. Src özniteliği ayarlanmamışsa, kullanıcı aracıları öğesinin içeriğini komut dosyası olarak yorumlamalıdır. src bir URI değerini sahipse, kullanıcı ajanlar elementin içeriğini göz ardı ederek URI ile komut almak gerekir.

(örneğin, her iki yorumlamak yoktur). Matt'in cevap @ ve yorumumu netleştirmek için daha ileri

+1

https://getfirebug.com/firebug-lite.js dosyasını açın; "var getScriptURL" ve "var options = fileOptions.split (", "); –

+0

@Theo: 'fileOptions'," Komut Dosyası URL Seçenekleri "(http://getfirebug.com/firebuglite#ScriptURLOptions) içindir. 'GetScriptUrl' için ne görmemi istiyorsun? – Matt

+0

@Matt Seni kastetmedim, cevabını ekliyordum. 'Var url = getScriptURL (script);', açıkladığınız şeyin olduğu yer. –

2

:

var doc = Firebug.browser.document; 
var script = doc.getElementsByTagName("script")[index]; 
var url = getScriptURL(script); 
var isExternal = url && url != doc.location.href; 

try 
{ 
    if(isExternal) 
    { 
    Ajax.request({url:url, onSuccess:renderProcess, onFailure:onFailure}) 
    } 
    else 
    { 
    var src = script.innerHTML; 
    renderProcess(src) 
    } 
} 
catch(e) 
{ 
    onFailure() 
}