如何在JSNI代码中使用Javascript库(从CDN下载)?
例如,我想要从这个JSNI方法中调用javascript条纹方法:
private native void contactStripe(String creditCard, String cvc, String expiryMonth, String expiryYear) /*-{
$wnd.Stripe.setPublishableKey('my_stripe_publishable_key');
$wnd.Stripe.createToken({
number: creditCard,
cvc: cvc,
exp_month: expiryMonth,
exp_year: expiryYear
}, callBack);
}-*/;..。但是,还没有定义Stripe javascript方法。
(有关Stripe.createToken方法https://stripe.com/docs/tutorials/forms#create-a-single-use-token的更多信息)
使用CDN url注入条纹javascript文件:
ScriptInjector.fromUrl("https://js.stripe.com/v1/").setCallback(
new Callback<Void, Exception>() {
public void onFailure(Exception reason) {
}
public void onSuccess(Void result) {
contactStripe("0000111122223333", "456", "04", "2014");
}
}).inject();发布于 2013-01-22 18:56:44
如果希望JS脚本以其定义的全局变量可通过$wnd访问的方式注入,则必须使用setWindow(ScriptInjector.TOP_WINDOW).
发布于 2013-01-22 04:05:42
尝试将您的代码更改为:
private native void contactStripe(String creditCard, String cvc, String expiryMonth, String expiryYear) /*-{
console.log($wnd.Stripe); // Should log 'Object'
console.log($wnd.Stripe.createToken); // should log function
var obj = {
number: creditCard,
cvc: cvc,
exp_month: expiryMonth,
exp_year: expiryYear
};
consloe.log(obj); // Should be 'Object'
$wnd.Stripe.createToken(obj, callBack);
}-*/; 如果您使用chrome调试工具,您可以检查所有这些对象。
更新你不提供回调。这是你的问题吗?
https://stackoverflow.com/questions/14446136
复制相似问题