Обновление и окончательное заключение
Оказывается, что спецификация на самом деле говорит , что это желаемое поведение, поэтому реализация IE9 не работает .
4.2 Атрибут sessionStorage
Когда методы setItem (), removeItem () и clear () вызываются для объекта Storage x ... если методы что-то делали, то в каждом HTMLDocument ... [то есть ], связанной с той же областью хранения, отличной от x , событие хранения должно быть запущено ....
Итак, как мы видим, спецификация действительно плохо работает, давая понять, что это заданное поведение. Это было причиной, почему реализация Opera 10 была нарушена, и это, скорее всего, также причина, почему реализация IE9 не работает.
Что мы узнаем из этого? Всегда читайте каждые , single , слово спецификации (особенно если вы реализуете материал ...).
Старый ответ
Как вы сказали, основное поведение здесь - "вызывать все, кроме текущей страницы".
Есть старый Chrome Отчет об ошибках с июля прошлого года.
Как можно там прочитать, Firefox имеет ту же «проблему». Я проверял это с последней ночной, все еще ведет себя так же, как в Chrome.
Другой тест в Opera 11 показывает, что это должно быть некое заданное поведение, поскольку Opera 11 делает то же самое, но Opera 10 запускает события на всех окнах / вкладках. К сожалению, официальные журналы изменений для Opera 11 не сообщают о каких-либо изменениях в этом поведении.
Читая спецификацию , ничто там не говорит об этом поведении. Единственное, что я смог найти, это:
Событие хранилища возникает при изменении области хранилища, как описано в предыдущих двух разделах (для хранилища сеансов, для локального хранилища).
Когда это происходит, пользовательский агент должен поставить задачу в очередь, чтобы запустить событие с хранилищем имен, которое не всплывает и не может быть отменено, и которое использует интерфейс StorageEvent для каждого объекта Window, чей объект Document имеет объект Storage. это затронуто.
Примечание. Сюда входят объекты документа, которые не являются полностью активными, но события, срабатывающие на них, игнорируются циклом событий до тех пор, пока документ снова не станет полностью активным.
Ну, что означает примечание?
Из другой спецификации :
Документ считается полностью активным, когда он является активным документом своего контекста просмотра, и либо его контекст просмотра является контекстом просмотра верхнего уровня, либо Документ, через который этот контекст просмотра вложен, сам по себе полностью активен.
Не имеет смысла? Да. Это помогает нам в любом случае? №
Таким образом, мы (в чате JavaScript) нажали на #whatwg, чтобы увидеть, что все это значит, до сих пор не было ответа. Я обновлю свой ответ, как только мы получим какой-либо ответ.
Подвести итоги
Firefox, Chrome, Safari и Opera ведут себя одинаково. То есть они не открываются на вкладке / в окне, которые сделали возможным локальное хранение.
Но IE9 Beta ведет себя как Opera 10, поэтому она запускается на всех вкладках / окнах.
Так как автор спецификации localStorage работает в Google в области исследований и разработок, я вряд ли сомневаюсь, что Chrome ошибется. И поскольку в Bugzilla нет ошибок по этому поводу, а Opera изменила поведение в 11, похоже, именно так оно и должно работать. До сих пор нет ответа, почему он работает таким образом и почему IE9 ведет себя по-другому, но мы все еще ждем ответа от # whatwg.