鍍金池/ 問答/HTML/ js 三方腳本覆蓋方法怎么解決?

js 三方腳本覆蓋方法怎么解決?

js腳本中一些常用的方法,例如window.onbeforeunload 網(wǎng)頁關(guān)閉觸發(fā)一些事件。怎么確保一些三方插件,比如在線客服,三方j(luò)s覆蓋該方法,導(dǎo)致自己的業(yè)務(wù)丟失呢?

回答
編輯回答
不討喜

在業(yè)務(wù)代碼設(shè)定完onbeforeunload之后, 通過Object.defineProperty設(shè)定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
});
2017年5月4日 14:53