SORU
31 Ocak 2010, Pazar


Nasıl bilinmeyen bir ortama jQuery bağlıdır Javascript widget embed

JQuery bağlı bir javascript widget geliştiriyorum. Widget ya da şimdiden bir WordPress kullanmak yüklü olan bir sayfaya yüklenmemiş. Bu durumda gelip bir sürü sorun var...

  1. Eğer web sayfası bir WordPress kullanmak zorunda mı yoksa kendi yükünü bir WordPress kullanmak zorundayım. Bunu yaparken hassas bir zamanlama sorunu olabilir, ancak var. Eğer benim widget jQuery yükleme bitti ve çalıştırmadan önce yükler ve çalıştırır, örneğin, jQuery is not defined bir hata alıyorum.

  2. Eğer web sayfası bir WordPress kullanmak varsa, genellikle bunu halledebilirim. Eğer jQuery sürümü eski ise, ancak, benim kendi yüklemek istiyorum. Eğer kendim yükleme yaparsam, ancak, $ değişken stomp değil gibi bir şekilde yapmak istiyorum. Eğer jQuery.noConflict() ve komut herhangi $ bağlı kurdum sonra sadece kendi sayfa kopardım.

  3. Eğer web sayfasını başka bir javascript Kütüphanesi (örneğin prototip) kullanıyorsa, prototip hassas $ değişken olması da ihtiyacım vardı.

Tüm yukarıda nedeniyle, daha kolay görünen bir WordPress kullanmak bağlıdır. Ama çoğunlukla widget kodunu yeniden yer alacağı yolun, aşağı gitmeden önce, tavsiye için sormak istedim.

Benim kod, zamanlama böcek ve bazen $ da dahil olmak üzere temel iskelet böcek, şöyle:

<script type="text/javascript" charset="utf-8">
// <![CDATA
 if (typeof jQuery === 'undefined') {
  var head = document.getElementsByTagName('head')[0];
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = '{{ URL }}/jquery.js';
  head.appendChild(script);
 }
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>

Benim widget aşağıdaki yapıya sahiptir:

(function($) {
 var mywidget = {
  init: function() {
   ...
  }
 };
 $(document).ready(function() {
   mywidget.init();
 });
})(jQuery);

Eğer bahsi geçen tüm ortamlarda çalışabilen bir widget ulaşmak için herhangi bir tavsiye ya da kaynak varsa, çok minnettar olacaktır.

CEVAP
1 ŞUBAT 2010, PAZARTESİ


Bazı cevaplar ve işaretlerini Gözden geçirme ve bazı yararlı bir WordPress kullanmak hackerlar bulduktan sonra, aşağıdaki gibi bir şey ile sona erdi:

(function(window, document, version, callback) {
    var j, d;
    var loaded = false;
    if (!(j = window.jQuery) || version > j.fn.jquery || callback(j, loaded)) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "/media/jquery.js";
        script.onload = script.onreadystatechange = function() {
            if (!loaded && (!(d = this.readyState) || d == "loaded" || d == "complete")) {
                callback((j = window.jQuery).noConflict(1), loaded = true);
                j(script).remove();
            }
        };
        (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script);
    }
})(window, document, "1.3", function($, jquery_loaded) {
    // Widget code here
});

Bu sayfa üzerinde önceden var olan bir jQuery ile çakışma yok yani eğer zaten yüklü değilse jQuery yük olur ve geri arama içinde saklar. Ayrıca en az bir sürümü ya da bu durumda, v1 yükler bilinen sürümü -- başka denetler.3. Ya da bir WordPress kullanmak tetikler yapılması gereken herhangi bir durumda yüklü olup olmadığı üzerinde geri (widget) için bir boolean değeri gönderir. Ve jQuery yüklendikten sonra benim widget, jQuery geçirme çağrısı yapıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • Just So

    Just So

    3 HAZİRAN 2007