2010-02-08 16 views
5

JS hakkında tamamen yeni.Bir bookmarklet kullanarak harici bir javascript çalıştıramıyor

Geçerli sayfadaki yer işaretlerini kullanarak erişen öğeleri değiştiren bir dış komut dosyası kullanmam gerekiyor. Aşağıdaki < script> ekleme hatları web sayfasının html kaynak kodunu değiştirirseniz

:

s=document.createElement('script'); 
s.type='text/javascript'; 
s.src='script.js'; 
document.getElementsByTagName('head')[0].appendChild(s); 

iyi çalışıyor. Ben bir javascript oluşturmak Ama eğer: imleyicisini aynı çizgilerle, şu dize ile boş bir sayfa edinin:

[object HTMLScriptElement] 

, oysa ben öncekilerin hattı

void(null); 

ekleyerek bir yer işareti uygulaması oluşturursanız , web sayfası boşa gitmez, ancak betik yürütülmez.

Neden?

cevap

7

yaygın bir uygulama basitçe böyle bir kendi kendine çalışan işlev ifadesi, bir şeyler kullanmaktır:

(function() { 
    var s=document.createElement('script'); 
    s.type='text/javascript'; 
    s.src='script.js'; 
    document.getElementsByTagName('head')[0].appendChild(s); 
}()); 

Bookmarklet:

javascript:(function(){var s=document.createElement('script');s.type='text/javascript';s.src='script.js';document.getElementsByTagName('head')[0].appendChild(s);}()); 

fonksiyonu undefined (geri dönüş değeri verilir) önlenmesi dönecektir Navigasyon

Ayrıca, tüm değişkenler anonim işlev kapsamında oluşturulduğundan, sayfada kullanılan diğer değişkenlerle çakışabilen genel değişkenler (s gibi) oluşturulmasını engelleyeceğini de unutmayın.

+0

Hala çalışmıyor. – chanchal1987

İlgili konular