2013-06-25 39 views
6

Tôi thấy các hành vi khác nhau của HTML5 sessionStorage khi theo Weblinks. Đôi khi sessionStorage của trang đầu tiên đang được sao chép vào TargetPage, đôi khi tôi nhận được sessionStorage trống trên TargetPage.sessionStorage trên cửa sổ mới không trống, khi theo một liên kết với target = "_ blank"

Bất cứ ai có thể giải thích cho tôi, tại sao lại xảy ra trường hợp này?

Với liên kết sau:

<a href="TargetPage.html" target="_blank">link</a> 

Khi tôi mở liên kết với một nhấn chuột phải - "liên kết mở trong Tab mới">, các sessionStorage là trống trên TargetPage. (Dự kiến) Nhưng khi tôi mở liên kết với một nhấp chuột trái bình thường, sessionStorage sẽ được sao chép sang TargetPage. (Không mong muốn)

Lưu ý: Tôi đã thấy hành vi này trong Chrome và Firefox. Internet Explorer 9 cung cấp một sessionStorage trống trong cả hai trường hợp. Đây là hành vi mong đợi của tôi.

Tôi đã tạo một jsFiddle để chứng minh hành vi: http://jsfiddle.net/P9nUv/3/

bất cứ ai có thể nghĩ ra một giải pháp qua trình duyệt để đảm bảo một sessionStorage trống mới trình duyệt Tabs/Windows, không có vấn đề làm thế nào họ đã được mở?

Mọi trợ giúp đều được đánh giá cao!

Trả lời

1

IMHO:

Tôi nghĩ rằng sự cố là khác nhau browsing context. Trong W3C webStorage đặc điểm kỹ thuật có một đoạn:

Khi một tài liệu mới được tạo ra trong một bối cảnh duyệt trong đó có một bối cảnh duyệt cấp cao nhất, các đại lý người dùng phải kiểm tra để xem có bối cảnh duyệt cấp cao nhất có khu vực lưu trữ phiên cho rằng xuất xứ của tài liệu

Document trong báo giá này có nghĩa là trang mới. Vì vậy, nó có nghĩa là nếu bạn mở trong tab mới cùng một trang nó sử dụng cùng một browsing context và cùng một sessionStorage, nhưng nếu bạn mở trong cửa sổ mới (tức là target = "_ blank") thì browsing context là khác nhau.

HOẶC

Vấn đề có thể được đề CPU riêng biệt, vì vậy riêng browsing context và riêng biệt sessionStorage s.

1

Một lần nữa một câu hỏi cổ xưa nhưng tôi đã không tìm thấy bất kỳ câu trả lời cho vấn đề này trên trang web này và tôi chỉ có vấn đề này cùng với Firefox 44. Tôi tìm thấy một workaround và bạn có thể tìm thấy nó ở đây: https://stackoverflow.com/a/35596134/3751509

Hi vọng điêu nay co ich.

Các vấn đề liên quan