gpt4 book ai didi

javascript - localStorage 事件监听器不会在 Chrome 中为本地文件触发

转载 作者:太空狗 更新时间:2023-10-29 13:11:50 28 4
gpt4 key购买 nike

localStorage 改变时我需要得到通知。此代码在 Firefox 24 中运行良好,但在 Chrome 29(或 30)或 IE 10 中不起作用。它也适用于实时服务器,但当我使用本地文件(文件:///).

代码如下:

<!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 中有什么问题?我将根据需要打开两个选项卡。

最佳答案

它只会在“其他”选项卡/窗口中触发事件,而不会在更改数据的选项卡/窗口中触发事件(这在您的问题中有点不清楚,所以如果我误解了请纠正我)。

When the setItem(), removeItem(), and clear() methods are called on a Storage object x that is associated with a local storage area, if the methods did something, then in every Document object whose Window object's localStorage attribute's Storage object is associated with the same storage area, other than x, a storage event must be fired, as described below.

Source W3C

更新以根据评论完成答案:

出于安全原因,如果页面从文件协议(protocol)(file:///)运行,在某些浏览器中会有限制。

在 Chrome 中,您可以通过提供参数 --allow-file-access-from-files 来覆盖它:

chrome.exe --allow-file-access-from-files

我不确定您是否可以在其他浏览器上做类似的事情。我建议使用本地服务器(例如 Mongoose)进行测试,以免在实际场景中遇到任何意外。

关于javascript - localStorage 事件监听器不会在 Chrome 中为本地文件触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150638/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com