SORU
10 Temmuz 2010, CUMARTESİ


Tam olarak ne zaman(belge)$.hazır geri yürütülür?

$(document).ready arama (<a>) bir bağlantı etiketi için .click() işleyicisi veriyoruz varsayalım. Bu işleyici varsayılan eylem (href) iptal edip bir uyarı gösterecektir.

Ne isterdim, biliyor musun tam olarak ne zaman geri alacak yürütmek ve mümkün kullanıcı için tıklayın çapa (belgeye sahip tarayıcı) ama olay olmadı henüz bağlı.

Burada bir bağlantı içeren farklı HTML sayfaları ama komut alınma sırası farklıdır. Fark (varsa) aralarında ne var? Farklı tarayıcılar farklı davranır?

Sayfa 1:

<html>
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            alert('overriding the default action');
            return false;
        });
    });
    </script>
</head>
<body>
    <a href="http://www.google.com">Test</a>
</body>
</html>

Page2:

<html>
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
</head>
<body>
    <a href="http://www.google.com">Test</a>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            alert('overriding the default action');
            return false;
        });
    });
    </script>
</body>
</html>

Page3:

<html>
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <a href="http://www.google.com">Test</a>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(function() {
        $('a').click(function() {
            alert('overriding the default action');
            return false;
        });
    });
    </script>
</body>
</html>

Bu yüzden olası bir kullanıcı çapa tıklayarak href yönlendirilir ve hiç uyarı görür (javascript durumunda tabii ki engelli görmezden gelerek)? Bu örnekler, herhangi bir şey verilmiş olabilir mi?

İhtiyacım olan tek şey click olay işleyicisi kullanıcı bu çapa tıklatın için herhangi bir olasılık var önce çapa bağlı olduğundan emin olun. href boş bulunur ve giderek javascript büyüt o zaman biliyorum ama bu daha genel bir soru.

HTML hızlı web sunucusu tarafından oluşturulur, ancak jquery Kütüphanesi zaman uzak bir sunucudan getirilecek olursa o ne olacak? Bu benim senaryo etkileyecek? DOM, yükleme göre komut eklenmesi sırası nedir? Buna paralel olarak yapmış olabilirler mi?

CEVAP
10 Temmuz 2010, CUMARTESİ


Örnek 3en yüksek şansa sahip olacaktırkullanıcı işleyici olmadan linki tıklayın mümkün henüz yapıştı sahip olmak. JQuery Kütüphanesi yükleniyor berisonralink verilemez, eğer Google'ın sunucuları biraz yavaş (veya DNS sorgusunun bir saniye sürer ya da öylesine), veya kullanıcılar bilgisayar yavaş süreci DV bağlantısını değil, onun ' I işleyicisi bağlı olduğunda kullanıcı çalışır için tıklayın.

Bunun gerçekleşmesi, başka bir durum olursa çok büyük ya da çok yavaş yükleniyor bir sayfa varsa ve bu bağlantı üst kısmında yer alır. Sonra DOM parçaları görünür ne zaman tam olarak hazır olmayabilir. Eğer böyle bir sorun ile karşılaştınız çalıştırıyorsanız,en güvenlisiyapmak için:

  1. head jQuery (veya 2 örnek 1) yük
  2. Tıklayın hemen <a> öğesinden sonra olay ama DOMReady bir geri takmayın. Bu sayede hemen verilir ve bu belgenin geri kalanı için beklemez.

Bir öğe oluşturulur sonra, DOM yakaladı ve daha sonra bir WordPress kullanmak erişebilirsiniz:

<a href="http://www.google.com">Test</a>
<script type="text/javascript>
    // No (document).ready is needed. The element is availible
    $('a').click(function() {
        alert('overriding the default action');
        return false;
    });
</script>

Ayrıca,eylem JavaScript tamamen bağımlı olduğunu, hatta HTML olarak render yok o zaman eğer user384915 yorum temelinde, DV hazır olduktan sonra bunu ekleyin:

<script type="text/javascript">
jQuery(function($){
   $("<a />", { 
      style: "cursor: pointer", 
      click: function() {
        alert('overriding the default action');
        return false;
      },
      text: "Test"
   }).prependTo("body");
});
</script>

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CruzerLite

    CruzerLite

    1 EKİM 2011
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012
  • Strata1000

    Strata1000

    28 EYLÜL 2009