2012-04-23 21 views
7

Ben Facebook'un haber beslemesini yükleyen bir işleve kanca için çalışıyorum: Facebook.com üzerindeBir javascript işlev çağrısına, bunu yapmak için herhangi bir şekilde bağlanmanız mı gerekiyor?

UIIntentionalStream.instance && UIIntentionalStream.instance.loadOlderPosts(); 

.

Bunu kendi JavaScript'imle yapmanın bir yolu var mı? Temel olarak, bir çeşit geri bildirime ihtiyacım var - bu işlev çağrıldığında, kendi işlevimin çağrılmasını istiyorum. Böyle

cevap

7

deneyin şey: istediğiniz yere

var old = UIIntentionalStream.instance.loadOlderPosts; 
UIIntentionalStream.instance.loadOlderPosts = function() { 
    // hook before call 
    old(); 
    // hook after call 
}; 

hemen önce veya orijinal işlevin çağrısından sonra, oltaya.

18

daha tam yöntem olacaktır:

var old = UIIntentionalStream.instance.loadOlderPosts; 
UIIntentionalStream.instance.loadOlderPosts = function() { 
    // hook before call 
    var ret = old.apply(this, arguments); 
    // hook after call 
    return ret; 
}; 

Bu loadOlderPosts herhangi bir parametreyi bekliyor ya bu kullanıyorsa arayan herhangi dönüş değeri beklediği takdirde, bu gibi bunlardan doğru sürümünü alacak emin olur

3

Daha önceki yayınlarda genişletme: Bu "kancalama" eylemini gerçekleştirmek için arayabileceğiniz bir işlev oluşturdum.

hookFunction(UIIntentionalStream.instance, 'loadOlderPosts', function(){ 
    /* This anonymous function gets called after UIIntentionalStream.instance.loadOlderPosts() has finished */ 
    doMyCustomStuff(); 
}); 



// Define this function so you can reuse it later and keep your overrides "cleaner" 
function hookFunction(object, functionName, callback) { 
    (function(originalFunction) { 
     object[functionName] = function() { 
      var returnValue = originalFunction.apply(this, arguments); 

      callback.apply(this, [returnValue, originalFunction, arguments]); 

      return returnValue; 
     }; 
    }(object[functionName])); 
} 

Bonus: Aynı zamanda, iyi bir önlem için, tüm bir kapamayı da sarmalısınız.

İlgili konular