javascript - 在另一个函数中调用匿名函数而不调用父函数
问题描述
我试图在另一个函数中调用一个匿名函数,但没有调用父函数。因为调用父函数会产生错误。
父函数:
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 (父函数)。
有任何想法吗?
解决方案
您不能在所需的上下文中直接调用函数,但可以将函数提取到外部范围,然后在内部和全局范围内使用它。
假设你有这样的情况;
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()
直接访问
推荐阅读
- ruby-on-rails - 在 Rails 中使用单个 form_with 创建和编辑嵌套资源
- pojo - RestAssured、POJO 和处理列表
- xamarin - Xamarin数据绑定如何绑定值乘以2
- angular - 生命周期钩子执行而它们不应该执行
- javascript - 在谷歌条形图中,我需要将 vaxis 中的数字显示为逗号分隔值?
- node.js - 如何在不结束会话的情况下使用 JOVO 的 tell 方法响应 Alexa 或 Google
- python - 在使用 TensorRT 推理服务器时指定优化策略
- node.js - NodeJs 无法回调 AWS Secrets Manager 响应
- elasticsearch - 基于索引名称的 Elasticsearch 索引生命周期管理
- mule - Mule 中的 Dataweave - 更改对象的值数组