Javascript 在调用onclick函数之前,检查外部js中的函数是否可用

Javascript 在调用onclick函数之前,检查外部js中的函数是否可用,javascript,callback,Javascript,Callback,我们通过异步加载第三方脚本。第三方脚本包括一个函数FSFB.fbcaller('123abc'),我们希望在用户单击元素时调用该函数。我们使用innerHTML生成#调用程序。在将onclick事件附加到#invoker之前,如何确保函数FSFB.fbcaller('123abc')可用 window.onload=函数(){ 函数insertAfter(referenceNode,newNode){ referenceNode.parentNode.insertBefore(新节点, 参考节点

我们通过异步加载第三方脚本。第三方脚本包括一个函数FSFB.fbcaller('123abc'),我们希望在用户单击元素时调用该函数。我们使用innerHTML生成#调用程序。在将onclick事件附加到#invoker之前,如何确保函数FSFB.fbcaller('123abc')可用

window.onload=函数(){
函数insertAfter(referenceNode,newNode){
referenceNode.parentNode.insertBefore(新节点,
参考节点(下一个节点);
}
ar el=document.createElement(“div”);
el.id=“调用器容器”;
el.innerHTML=“
    • ”; var afterel=document.querySelector(“.master container”); 插入后(后el,el); }
您可以使用以下条件进行测试:

if (window.FSFB && window.FSFB.fbcaller) {
    // Function is available
}

这应该行得通

是否有错误?如果是,什么错误?使用带有检查类型的答案是最好的,因为如果未定义,它不会抛出错误,并且它确保目标实际上是一个函数而不是一个函数variable@MaherFattouhUH这两个答案都不会在未定义上抛出错误。“函数不是变量”——变量和函数是正交概念。变量可以保存函数。我刚刚测试了您的代码,使用了
window.FSFB
而不是
FSFB
您是对的,它不会抛出错误。通常我会得到
未捕获的引用错误:未定义FSFB
。第二个问题我指的是一个非函数对象,但从技术上讲你也是对的。你怎么知道
FSFB
是一个函数?它可能是一个物体,在这种情况下,您的代码将无法按预期工作。FSFB是一个全局函数,如jQuery.ajax。例如,jQuery是全局函数,ajax是我要调用的函数,FSFB.fbcaller也是如此。您首先检查全局函数是否存在,然后移动到所需的函数,如果它是要进入如果你想看看这个
if (window.FSFB && window.FSFB.fbcaller) {
    // Function is available
}
if(typeof FSFB == "function"){
  if(typeof FSFB.fbcaller == "function"){
    //function exist
  }
}