javascript - 如何从全局函数访问角度分量函数 - 请与 IE11 兼容
问题描述
情况是这样的——我正在一个基于角度的应用程序中使用万事达卡支付网关 api。该 api 为成功和错误进行回调,并在 script 标签的 data-error 和 data-success 属性中传递回调以加载 Mastercard api。
<script src="https://eu-gateway.mastercard.com/checkout/version/49/checkout.js"
data-error="errorCallback"
data-cancel="cancelCallback">
</script>
我有一个在 Firefox 和 Chrome 中运行良好但在 IE11 中完全失败的解决方案。我已经取消了所有 polyfills 导入的注释,但无论我尝试多少,都没有任何效果。
这是我到目前为止所做的:
export class AppComponent implements OnInit {
constructor(private ngZone: NgZone, private router:Router) {
var _self = this;
(<any>window).errorPaymentCallback = function(error){
console.log(error);
};
(<any>window).cancelPaymentCallback = function(){
console.log('cancel');
};
}
无论我尝试什么,都不会触发回调,而是 api 返回错误。有任何想法吗?
解决方案
您可以调度一个事件,然后将其捕获AppComponent
这是你如何做到这一点:
<script src="https://eu-gateway.mastercard.com/checkout/version/49/checkout.js"
data-error="errorCallback"
data-cancel="cancelCallback">
</script>
<script type="text/javascript">
function errorCallback(error) { document.dispatchEvent(new Event('payment-error', { bubbles: true })); }
function cancelCallback() { document.dispatchEvent(new Event('payment-error', { bubbles: true })); }
window.global = window;
</script>
在AppComponent
@HostListener('document:payment-error', ['$event'])
paymentError(event){
//do your work
}
推荐阅读
- sql - Postgresql 尝试使用 over() 计算总数的百分比。以前从未使用过 over() 但我读过这是正确的方法
- java - IntelliJ 无法识别 CallableStatement 字符串中的模式名称
- google-sheets - 如何有条件地连接单元格
- r - 在非 NA 观测值之间进行插值
- ios - 如何创建不必在 Apple 的提醒应用中显示的提醒
- javascript - 如何在动画滚动中将整个页面从链接滚动到 75%
- monorepo - 存储库中的 Nx 自定义原理图无法加载
- vue.js - (Vue.js) 在github页面上,'#app'里面是空的
- outlook-addin - 多个 Outlook Add-ink 窗格同时显示
- azure - Azure Powershell - 如何获取订阅所有者的电子邮件?