本地存储事件侦听器不会在 Chrome 中针对本地文件触发
localStorage event listener does not fire in Chrome for local file
我需要
在更改localStorage
时收到通知。此代码在 Firefox 24 中运行良好,但在 Chrome 29(或 30(或 IE 10 中不起作用。它也可以在实时服务器上工作,但当我使用本地文件(file:///
(进行测试时则不行。
这是代码:
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#submit').click(function() {
console.log('Clicked');
if($('#username').val() != "")
localStorage.setItem('someItem', 'someValue');
});
$(window).bind('storage', function(e) {
alert('change');
});
});
</script>
</head>
<body>
<input type="text" id="username" name="username" value="" />
<a href="#" id="submit">Click me</a>
<p id="result"></p>
</body>
</html>
这在 Chrome 中有什么问题?我根据需要打开两个选项卡。
它只会在"其他"选项卡/窗口中触发事件,而不会在更改数据的选项卡中触发事件(这在您的问题中有点不清楚,所以如果我误解了,请纠正我(。
当 setItem((、removeItem(( 和 clear(( 方法在 与本地存储区域关联的存储对象 x,如果 方法做了一些事情,然后在每个 Document 对象中 窗口 对象的 localStorage 属性的存储对象与 相同的存储区域,除了 x,必须触发存储事件, 如下所述。
来源 W3C
更新以根据注释完成答案:
由于安全原因,如果页面从文件协议(file:///
(运行,则在某些浏览器中会有限制。
在 Chrome 中,您可以通过提供参数来覆盖它 --allow-file-access-from-files
:
chrome.exe --allow-file-access-from-files
我不确定您是否可以使用其他浏览器执行类似操作。我建议使用本地服务器(例如猫鼬(进行测试,以免在实时场景中遇到任何意外。
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 通过将文件上载到ASHX处理程序来实现SSE(服务器发送的事件)
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- Dropzone最大文件大小超过事件
- 选择同一文件时未触发HTML输入文件选择事件
- 如何在 iPhone 上打开启用了 CSS 事件的 HTML 文件
- 如何在jQuery中处理输入类型=文件的onchange事件
- XHTML文件头部分中的事件驱动函数
- 触发AngularJS中的输入文件点击事件
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 如何从加载的JSON文件构建外部事件列表
- 如何在jquery/JavaScript中打开浏览文件对话框时执行取消事件
- 从驱动器打开文件时未调用Onfileloaded事件
- JQuery多文件事件未激发
- 如何查找jquery或javascript事件从哪个文件发生
- 如何在javascript中从ondrop事件中获取文件URL
- 预加载音频文件/事件
- 两个组件在Angular2中干扰文件事件