js 三方脚本覆盖方法怎么解决?

js脚本中一些常用的方法,例如window.onbeforeunload 网页关闭触发一些事件。怎么确保一些三方插件,比如在线客服,三方js覆盖该方法,导致自己的业务丢失呢?

阅读 2.3k
1 个回答

在业务代码设定完onbeforeunload之后, 通过Object.defineProperty设定onbeforeunload属性,

var _onbeforeunload = window.onbeforeunload;
Object.defineProperty(window, 'onbeforeunload', {
    get: function() {
        return _onbeforeunload;
    },
    set: function(newOnBeforeUnload) {
        _onbeforeunload = function() {
            if (typeof _onbeforeunload === 'function') {
                _onbeforeunload.apply(this, arguments);
            }
            return newOnBeforeUnload.apply(this, arguments);
        };
    },
    enumerable : true,
    configurable : true
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题