js 如何监听localstorage事件
最近在做项目的时候需要监听localstorage的变化,使用默认的storage事件发现无效,从网上找到一种解决办法,这个方案重写了Localstorage事件,只要发生变化就会触发定义的方法,刚好能满足需求,代码如下供参考。
index.vue
created() {
// window.addEventListener("storage",aaa)
obj.render(function(d){
debugger
});
},index.js
let obj = {
  _cb: null,
  render(cb) {
    this._cb = cb
    this.addEvent(cb)
    // localStorage.setItem("PageEngineFormInputData", 123)
  },
  addEvent(cb) {
    var orignalSetItem = localStorage.setItem;
    localStorage.setItem = function (key, newValue) {
      var setItemEvent = new Event(cb);
      setItemEvent.newValue = newValue;
      setItemEvent.newValuekey = key;
      window.dispatchEvent(setItemEvent);
      orignalSetItem.apply(this, arguments);
    };
    window.addEventListener(cb, function (e) {
      // debugger
      console.log("newValue:", e.newValue);
      console.log("key:", e.newValuekey);
      if (cb && e.newValuekey === 'PageEngineFormInputData') {
        cb(e.newValue)
      }
    });
  }
}
export default obj
发表评论 (审核通过后显示评论):