2011-02-05 14 views

cevap

9

Konumla ilgili özellikleri almak için window.location nesnesini kullanabilirsiniz. Bazı önemli özellikler şunlardır:

  • window.location.href - Geçerli sayfanın tüm URL'yi döndürür
  • window.location.hostname - Herhangi dahil döner sadece ana makine adı (alan adı, alt etki alanları)
    • örnek: www.google.com
  • window.location.pathname - "?" Döner sadece yolu (kısım ile başlayan sorgu dizesi (URL kısmı dahil hostname/domain şu değil) ya da karma bütün bu iyi çalışıyor olsa /subdir/subpage.html

, ben diğerleri gibi (öneriyoruz: örnek (a "#" ile başlayan URL parçası))

  • Bu sunucu tarafı yapmak daha iyi olacağını söyledi. Sunucu genellikle müşteriden daha iyi şeyler yapabilir. Ayrıca, tüm JS kodunuzu tek bir merkezi dosyada varsa, yalnızca bu sayfa için bir olayı tetiklemek için bu gibi bir şeyi doğrudan sayfada (sunucuda) ekleyebilirsiniz. Bu, JS'den daha güvenilir olabilir. koklama yer:

    <script type="text/javascript"> 
    // jQuery example 
    $(document).ready(function() { 
        // Run function that is specific for this page 
        MyNamespace.initHome(); 
    }); 
    </script> 
    
+1

Yazdıklarınız doğrudur, ancak önerinize katılmıyorum: tarayıcı tarafından önbelleğe alınmış tek bir JS dosyasına sahip olmak sunucu ve kullanıcı performansı için genellikle sayfa başına verilen özel JS'den daha iyidir. – Phrogz

+1

Bu doğrudur, özellikle siteniz çok sayıda JS kullanıyorsa, ancak bu yalnızca bir JS küçük dosyası ve "global" JS dosyası yoksa, sunucu tarafı algılama genellikle daha iyi bir seçimdir. Zmol'un global bir JS dosyasına sahip olduğu sorusuyla ilgili olduğunu düşünüyorum, bu yüzden tavsiyeniz muhtemelen daha iyi olacaktır. – jhartz

+0

Cevabı, işe yarayabilecek başka bir fikri yansıtmak üzere güncelledim - sadece tüm JS'yi tek bir dosyada (sizin önerdiğiniz gibi) bulun ve yalnızca özel bir şeyi tetiklemek için gerçek sayfaya (sunucudan) 1 veya 2 satırlık kod ekleyin. – jhartz

0

JavaScript'iniz, window.location kullanarak geçerli URL'yi alabilir.

alert(window.location); 
2

Ben sunucu tarafında bu anlamaya ve doğru işlevleri çağırmak/sayfa bağlı olarak doğru komut dosyalarını yüklemek için daha iyi bir fikir olabilir düşünüyorum. Sunucu tarafı genellikle geçerli sayfanın neyse ne olduğunu daha iyi bilir.

2

Siz adresinden as ClosureCowboy said URL adresini okuyabilirsiniz, ancak bu bir çeşit geriye doğrudur. Genellikle, bir JavaScript dosyasına ihtiyacınız olmadığını biliyorsanız, sayfaya eklemezsiniz.

5

her sayfa için <body> eleman benzersiz id niteliği koyun ve JS ne yapması gerektiğini belirlemek için kullanabilirsiniz.Bu temelde (birçok küçük JS dosyalarına birleştirir kez) benim tek küçültülmüş dosyası ile görünüyor yapmak gibi şudur:

jQuery(function($){ 
    if (!$('body#home').length) return; 
    //... code specific to the home page 
}); 

jQuery(function($){ 
    if (!$('body#contact').length) return; 
    //... code specific to the contact page 
}); 

// etc. for each page 

Ama aynı kolaylıkla olarak daha verimli bir tek dosya yazabilirsiniz:

jQuery(function($){ 
    if ($('body#home').length){ 
    //... code specific to the home page 
    } 
    if ($('body#contact').length){ 
    //... code specific to the contact page 
    } 
}); 
+0

İkinci kod bloğunun 'body' kimliğinin bir kez daha alması daha etkili olur mu? Eğer 'if' blokları her kontroldeki bedenin kimliğini almak yerine bu değişkeni kontrol edebilir mi? – sb89

+0

@ sb89 Eğer ilgilenirseniz, test edin ve rapor verin. Benim çok güçlü tahminim: hızdaki herhangi bir fark bir şekilde veya diğeri farkedilemez ve ölçülemez olacaktır. – Phrogz

1

Her sayfa için benzersiz bir çerez ayarlamak için kullandığım küçük bir kod parçası. Tam olarak ne istediğini elde etmek için iyi çalışması gerekir. Farklı sayfalar için farklı eylemler üretmek için bir anahtar aracılığıyla çalıştırabilir veya yalnızca ana sayfada kod çalıştırmak için basit bir ifade ifadesini kullanabilirsiniz.

var sPath = window.location.pathname; 
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1); 
console.log(sPath); 

Firebug Console'da sayfayı aradığını görebilmeniz için console.log.log dosyasını ekledim. Popup etmeyi tercih ederseniz uyarın.

2

her sayfası (neyse önbelleğe) üzerinde yük izin, tek bir dosya içinde JS kodunun tüm tutun ama burada yakalamak var:

SADECE çağrı bunları ihtiyacı sayfasından ihtiyaç işlevler

JS dosyasında "hangi sayfa açıktayım" mantığını koymaya çalışmak sadece geriye doğru görünüyor.

İlgili konular