相关疑难解决方法(0)

Chrome的localStorage实施有什么问题?

对于这个问题,我在将一个函数绑定到Chrome 8.0.552.224中的Storage对象的change事件时得到了一个奇怪的结果.

考试:

<!DOCTYPE html>
<html>
  <head>
    <title>Chrome localStorage Test</title>
    <script type="text/javascript" >

      var handle_storage = function () {
        alert('storage event');
      };

      window.addEventListener("storage", handle_storage, false);

    </script>
  </head>
  <body>
    <button id="add" onclick="localStorage.setItem('a','test')">Add</button>
    <button id="clear" onclick="localStorage.clear()">Clear</button>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)
  • 在两个Chrome窗口中打开页面,一个窗口有两个标签,
  • 单击"添加"按钮

当我这样做时,我会在第二个选项卡和第二个窗口上显示一个警告框,但不会在调用该事件的选项卡上显示(我点击了).据我所知,我应该看到三个警告框(每个标签打开一个).

这是一个错误吗?有其他人得到这种行为吗?如果不是你在运行什么版本?或者我刚刚完全错了?

javascript html5 google-chrome

22
推荐指数
1
解决办法
2万
查看次数

不调用localStorage eventListener

我在窗口DOM-Object中添加了一个eventListener,并希望跟踪对localStorage所做的更改.

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

    <script language="JavaScript"><!-- 
        window.addEventListener('storage', storageEventHandler, false);
        function storageEventHandler(evt){
            console.log("oldValue: " + evt.oldValue );
            console.log("storage event called key: " + evt.key );
            console.log("newValue: " + evt.newValue );

        }
        $(document).ready(function(event) {
            $('#link1').click(function(event){
                event.preventDefault();
                localStorage.setItem('page', 2000);
                console.log(localStorage.getItem('page'));
            });
            $('#link2').click(function(event){
                event.preventDefault();
                localStorage.setItem('page', 998);
                console.log(localStorage.getItem('page'));

            });

         });
    </script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)

不知何故,即使在单击link1或link2时更改了localStorage值,也永远不会调用storageEventHandler.任何帮助深表感谢.

javascript html5 local-storage

14
推荐指数
2
解决办法
2万
查看次数

检测localStorage的任何变化?

有没有办法检测HTML5 localStorage中的任何更改,然后如果确实有任何更改,则调用某些函数?我将某些密钥存储为名称为"e1","e2","e3"等等......

我想检测是否删除或添加了任何键,然后在有任何更改时触发某些功能...

javascript jquery html5

14
推荐指数
1
解决办法
1万
查看次数

强制本地存储事件在同一窗口中触发

从许多来源,我发现本地存储事件仅在未发起更改的窗口/选项卡中触发.

我的问题是,有什么办法可以从同一个窗口检测到变化吗?或者可能覆盖强制事件在同一窗口/选项卡中触发的功能?

不包括该选项似乎不切实际,但我找不到办法.

谢谢

javascript html5 local-storage

9
推荐指数
1
解决办法
4194
查看次数

全局变量更改时更新反应组件状态

我有一个经常更改的全局变量。假设它存储在中window.something。在反应中,我需要将此更改反映到组件及其状态中。

示例代码:

class Example extends React.Component {

  constructor(props) {
        super(props);
        this.state = { something: '1'}
    }


  render() {
     return (
      <div>
      <input value={window.something}
             onChange={event => {this.setState({'something': event.target.value})}} 
      />
      </div>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,该值仅是第一次设置,并且随着变量的更新而没有变化。

javascript reactjs

5
推荐指数
1
解决办法
5164
查看次数

如何在 Angular 4 中查找 localStorage 的变化?

我正在尝试使用 Angular 4 访问 localStorage 并使用 Observables 查找 localStorage 值的变化:

这是我一直在研究的代码:

userNameObservable: Observable<string>;
userName: String = '';
ngOnInit() {
    this.userNameObservable = Observable.create(
      Observable.of(localStorage.getItem('profileName'))
    );
    this.userNameObservable.subscribe((name: String) => {
      this.userName = name;
    })
}
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误ERROR TypeError: this._subscribe is not a function。我该如何解决?有没有更好更有效的方法来查找 localStorage 中的更改?

javascript local-storage observable angular

3
推荐指数
2
解决办法
8770
查看次数