2014-04-12 29 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)没有比轮询更不那么“积极”。但我怀疑你引用的代码有事件机制,允许你订阅“准备好”事件。 –