2012-07-05 20 views
5

SharePoint'e yüklediğim ve SP'nin kendi başlatılmasıyla bittikten sonra başlatılan init yöntemimi alma sorunlarım olan bir özel JS komut dosyası var.SharePoint başlatıldıktan sonra JavaScript işlevini çalıştır

_spBodyOnLoadFunctionNames

Ben ilk "resmi" bir şekilde çalıştı ve _spBodyOnLoadFunctionNames.push("myInitMethod"); ile vücut yükünün sonra infaz fonksiyonların Listeye benim işlev adı eklendi ama bu her sayfa yükleme, ben güvenemez üzerinde ateş etmiyor Bu konuda.

Sonra

ExecuteOrDelayUntilScriptLoaded ben ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js"); işlevini kullanmaya çalıştı ama ya her sayfa yükleme ateş etmez.

Her iki yol da çalışıyor - ancak her seferinde değil. Komut dosyanızın'dan önce yüklenmesine rağmen SP'nin başlatıldığını varsayalım. Bu çoğunlukla Chrome'da, ancak IE'de de olur.

SP hazır olduğunda komut dosyasının çalıştırıldığından nasıl emin olabilirim?


Not: Orada sayfa yüklendiğinde ilginç bir davranıştır ve SP nesne tamamen (ExecuteOrDelayUntilScriptLoaded kayıtlı işlevler çağrılmadıysa) başlatılmadı: En kısa zamanda "Şuraya tıklayarak olarak "Sayfada anchor (altkümelerin hiarşisini görebilirsiniz) aşağıdaki dosyalar yüklenir ve init işlevim (ExecuteOrDelayUntilScriptLoaded'de kayıtlı) aranır!

  • core.debug.js
  • sp.core.debug.js
  • ScriptResx.ashx
  • sp.ui.dialog.debug.js
  • sp.runtime.debug.js
  • sp.debug.js

Yani her şey o tıklama sonra iyi olduğunu - bu ama neden olmasın pageload üzerinde olması gerektiği gibi?

cevap

4

Bu davranış SP 2010 ve Google Chrome arasındaki bazı sorunlarla ilgili görünüyor - Diğer sorunlarda bu sorun yok.

2

Merhaba, JavaScript'inin sp.js'ye sahip olmasından sonra yüklenmesini geciktirmenin bir yolunu aradığımda sorunuzu anladım.

Sağladığınız kodun bir kısmı çalışır durumda olmasının nedeni, (bazı zamanlar) SharePoint'in tüm bu kod tabanını başlatmamasıdır. Bu, Google Chrome'da büyük bir sorundur, ancak diğer tarayıcılarda da (IE dışında) olabilir. söz konusu sorunu çözmek için böyle bir şey yapabilirsiniz:

if (typeof(_spBodyOnLoadWrapper)!='undefined'){_spBodyOnLoadWrapper();} 

Ben .ready $ (belge) içine mayın koyun().

Ve sorumu yanıtladığınız için teşekkürler :)

İlgili konular