2011-04-07 22 views
10

jquery.js dosyasını myjs.js dosyasına eklemek istiyorum. Bunun için aşağıdaki kodu yazdım.jquery.js başka bir js dosyasında nasıl eklenir?

var theNewScript=document.createElement("script"); 
    theNewScript.type="text/javascript"; 
    theNewScript.src="http://example.com/jquery.js"; 
    document.getElementsByTagName("head")[0].appendChild(theNewScript); 
    $.get(myfile.php); 

5 satırında '$ tanımlı' hatası var. Jquery.js'yi eklemek ve myjs.js dosyasında $ .get() işlevini çağırmak istiyorum. Bunu nasıl yapabilirim? Yardım edin

+0

Neden sayfa dışında $ .get() öğesini kullanmaya çalışıyorsunuz? – Calum

+0

"$ .get (" myfile.php ");' '$ .get (myfile.php);' yerine söylemek istediğinizi varsayalım. –

+0

olası bir kopyası [jquery yüklü olup olmadığını kontrol edin, ardından false yükleyin] (http://stackoverflow.com/questions/1828237/check-if-jquery-has-been-loaded-then-load-it-if -fakat) –

cevap

10

programlı mutlaka senaryo sunulacak anlamına gelmez hemen. Bu dosyayı indirmek, ayrıştırmak ve yürütmek için tarayıcıyı beklemeniz gerekir. Bazı tarayıcılar, mantığınızı bağlayabileceğiniz komut dosyaları için onload olayını tetikler. Ancak bu bir tarayıcılar arası çözüm değildir. Belirli bir sembolün kullanılabilir hale gelmesi için "anketi" tercih ederim:

var theNewScript = document.createElement("script"); 
theNewScript.type = "text/javascript"; 
theNewScript.src = "http://example.com/jquery.js"; 
document.getElementsByTagName("head")[0].appendChild(theNewScript); 
// jQuery MAY OR MAY NOT be loaded at this stage 
var waitForLoad = function() { 
    if (typeof jQuery != "undefined") { 
     $.get("myfile.php"); 
    } else { 
     window.setTimeout(waitForLoad, 1000); 
    } 
}; 
window.setTimeout(waitForLoad, 1000); 
+0

Hangi tarayıcılar yükleme olaylarını desteklemiyor? IE 7. – Christophe

+1

gibi eski tarayıcılarda bile benim için gayet iyi çalışıyor. Okumak (ama kişisel olarak doğrulanmadı) komut dosyalarının ghost, opera, vb. Için çalıştığı 'onload' olayında' onreadystatechange 'seçeneğini kullanmanız gerekiyor. Http://unixpapa.com/js/dyna.html ve http://blog.lexspoon.org/2009/12/detecting-download-failures-with-script.html –

+0

adresine bakın. Olayı arama şekliniz doğrudur. İşleyici tarayıcıya bağlıdır. Modern tarayıcılar için addEventListener ve eski IE için attachEvent kullanıyorum, gayet iyi çalışıyor. – Christophe

4

Sorun şu ki, komut dosyası anında yüklenmiyor, script dosyasının sayfanıza indirilmesi ve yürütülmesi biraz zaman alıyor (jQuery durumunda $ tanımlamak için).

HeadJS'u kullanmanızı öneririm. o zaman yapabilirsiniz:

head.js("/path/to/jQuery.js", function() { 
    $.get('myfile.php'); 
}); 
+1

bu. çözüldü. herşey. benim. sorunları. Teşekkürler. – andufo

0

Basit cevabı, Dont. JQuery dosya davetsiz misafirlere çok dokunaklı yani deneyin. Diğer dosyaları jQuery dosyasına ekleme, genellikle JS konsolunda hatalara neden olur, PLUS jQuery dosyası, dosya ana belgesine yüklenene kadar başlatılamıyor.

Üzgünüz, bunu çizin. Ne yaptığını tam olarak bilmiyordum. Daha önce bu kodu kullanılan

var s = document.createElement('script'); 
s.type = 'text/javascript'; 
s.async = true; 
s.src = 'http://domain.com/jquery.js'; 
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s); 
0

ve işe yaradı:

bu deneyin belge kafasının içinde bir komut dosyası etiketi ekleme

var t=document; 
var o=t.createElement('script'); 
o=t.standardCreateElement('script'); 
o.setAttribute('type','text/javascript'); 
o.setAttribute('src','http://www.example.com/js/jquery-1.3.2.js'); 
t.lastChild.firstChild.appendChild(o); 
İlgili konular