首页 > 解决方案 > 在另一个函数中调用匿名函数而不调用父函数

问题描述

我试图在另一个函数中调用一个匿名函数,但没有调用父函数。因为调用父函数会产生错误。

父函数:

function onloadCallback() {
  grecaptcha.render("recaptchaHolder", {
    "size": "invisible",
    "sitekey": "1Lcsvh53yhsd5312hhsg554dfhs098bbeyi_Hv",
    "callback": function(resp) {
      $("zendesk-ticketing-form").attr("grecaptcha", resp)
    }
  });
}

我想这样称呼:

function(resp){$("zendesk-ticketing-form").attr("grecaptcha",resp)}

我正在使用 Java Selenium 来做到这一点..

我试过这个:

 js.executeScript("onloadCallback()(\"" + responseToken + "\")");

但它会产生一个错误,因为它在尝试访问其中的匿名函数之前调用了 onloadCallback (父函数)。

有任何想法吗?

标签: javascriptjavaseleniumrecaptchaanonymous-function

解决方案


您不能在所需的上下文中直接调用函数,但可以将函数提取到外部范围,然后在内部和全局范围内使用它。

假设你有这样的情况;

function a() {
  b('some-name', {
    foo: 1,
    bar: 2,
    c: function(a, b) {
      console.log('i was finally called', a, b);        
    }
  })
}

// turn it into something like

function functionForC(a, b) {
  console.log('i was finally called', a, b);        
}

function a() {
  b('some-name', {
    foo: 1,
    bar: 2,
    c: functionForC
  })
}

我建议将该函数移出函数的范围,然后在其中使用 at 作为参考,如下所示;

这样您当前的功能将被保留并且您可以轻松地functionForC()直接访问


推荐阅读