2014-04-12 30 views
0

我有一個生成this code的對象,但我只能在它的obj時使用它。 準備好屬性==爲true。 我只能使用純JavaScript或Prototypejs。 將腳本作爲源插入(<腳本src = ...)。如何添加一個監聽器到JavaScript Object變量?

有沒有辦法檢測對象何時可以使用? 我試圖把觀察者放在DOM上:加載,但它沒有工作。

我用

PagSeguroDirectPayment.setSessionId('someTextHere'); 
PagSeguroDirectPayment.getSenderHash(); 

第二行不工作,因爲對象是還沒有準備好。

任何幫助表示讚賞。

+1

請在這裏發表的代碼。只將它縮小到最相關的部分。 –

+0

嗨費利克斯。庫中的代碼不相關,但我會在這裏添加其他部分。 –

回答

2

如果沒有事件出現的基礎設施那麼唯一的選擇就是做投票:

function whenReady(obj, callback) { 
    var iid = setInterval(function() { 
    if(obj.ready) { 
     callback(); 
     clearInterval(iid); 
    } 
    }, 20); 
} 

,並使用它作爲:

PagSeguroDirectPayment.setSessionId('someTextHere'); 
whenReady(PagSeguroDirectPayment, function() { 
    PagSeguroDirectPayment.getSenderHash(); 
}); 
+0

我想過了時間間隔,但我擔心有一個不太積極的選擇。 =)但它的作品。非常感謝你。 –

+0

@RicardoMartins另一種方法是使用'Object.observe(callback)',所以沒有輪詢,但它a)沒有廣泛地進入瀏覽器,並且b)沒有比輪詢更不那麼「積極」。但我懷疑你引用的代碼有事件機制,允許你訂閱「準備好」事件。 –