'about-one-bug-of-iphone'

概述

写代码的时候,测试人员发现一个苹果设备上面有,而安卓机没有的bug。自己没钱买苹果设备,所以无法测试不完全。目前该bug在iPhone5,iPhone6,iPhone7上面可以复现。最新的mbp中的Safari中也可以复现。

如何复现?

我猜测是safari在改造webkit留下的bug。
sessionStorage或者localStorage设置键值对的时候,当值为空的时候,此时如果把页面关掉。Safari会自动把值为空的键值对清空。

1、打开Safari,打开控制台。

2、输入

1
2
3
4
5
6
7
8
9
10
11
localStorage.setItem('bug', '');
localStorage.setItem('bug1', 'a');
localStorage.setItem('bug2', 'b');
```

### 3、获取值

```js
localStorage.getItem('bug'); // ""
localStorage.getItem('bug1');//a
localStorage.getItem('bug2');//b

4、此时关闭浏览器,再次打开浏览器,输入

1
2
3
localStorage.getItem('bug'); //null 当sessionStroage中不存在该键值对时,会返回null。查看浏览器里面的sessionStroage,发现此时bug键值对被清空。
localStorage.getItem('bug1');//a
localStorage.getItem('bug2');//b

5、该特性存在,也不知道是否该称为bug。

猜测

sessionStorage或者localStorage设置键值对的时候,当值为空的时候,此时如果把页面关掉。Safari会自动把值为空的键值对清空。

利用

“”和null还是有区别的。怎么利用还没有好的思路