Javascript window.name用于<;中命名窗口的存储=IE7

Javascript window.name用于<;中命名窗口的存储=IE7,javascript,Javascript,我有一个应用程序,它使用window.name作为sessionStorage的后备存储 示例(为简洁起见简化): 这在几乎所有浏览器中都能很好地工作。然而,我最近发现,当使用目标启动窗口时,这在IE7及以下版本中不起作用 <a href="winning.html" target="bob">winning.html</a> 问题是,我并不总是能控制那个原始链接。有什么办法可以解决这个问题吗?窗口。name可能包含在您使用target=“bob”时设置的窗口名称,它实

我有一个应用程序,它使用
window.name
作为
sessionStorage
的后备存储

示例(为简洁起见简化):

这在几乎所有浏览器中都能很好地工作。然而,我最近发现,当使用目标启动窗口时,这在IE7及以下版本中不起作用

<a href="winning.html" target="bob">winning.html</a>

问题是,我并不总是能控制那个原始链接。有什么办法可以解决这个问题吗?

窗口。name
可能包含在您使用
target=“bob”
时设置的窗口名称,它实际上是窗口或框架的名称……因此只需使用另一个全局变量,例如
窗口。_session
。。。如果您有框架,最好使用
window.top.\u session
。仅供参考:所有全局JS变量都存储在窗口中,所以如果您像这样定义一个全局变量:
var name=“hello”
。。。您也可以通过
窗口访问它。name
窗口。name
可能包含在您使用
target=“bob”
时设置的窗口名称,它实际上是窗口或框架的名称……因此只需使用另一个全局变量,例如
窗口。_session
。。。如果您有框架,最好使用
window.top.\u session
。仅供参考:所有全局JS变量都存储在窗口中,所以如果您像这样定义一个全局变量:
var name=“hello”
。。。您也可以通过
窗口访问它。name

与通常的情况一样,将此问题放置几天,然后重新讨论它,这已经揭示了答案

我使用window.name会话存储的(from)测试了这个bug

正如您可能猜到的,这个脚本没有受到我原来帖子中的bug的影响。为什么?是什么使这一点起作用,而我上面的简单示例不起作用?这里的这一位是关键:

// page unload event
if (window.addEventListener) window.addEventListener("unload", Save, false);
else if (window.attachEvent) window.attachEvent("onunload", Save);
else window.onunload = Save;
出于某种原因,必须将数据保存回窗口的
卸载
事件中的
窗口.name
容器中


注意不要仅使用onunload方法,因为mobile safari不会记住数据。要让mobile safari在
window.name
中保存数据,您必须在onload之前手动保存数据。从本质上讲,为了实现最大的兼容性,您必须同时执行两项操作:保存在onunload中;每当设置新数据时,手动保存。

与通常情况一样,将此问题搁置几天,然后重新讨论它,这就揭示了答案

我使用window.name会话存储的(from)测试了这个bug

正如您可能猜到的,这个脚本没有受到我原来帖子中的bug的影响。为什么?是什么使这一点起作用,而我上面的简单示例不起作用?这里的这一位是关键:

// page unload event
if (window.addEventListener) window.addEventListener("unload", Save, false);
else if (window.attachEvent) window.attachEvent("onunload", Save);
else window.onunload = Save;
出于某种原因,必须将数据保存回窗口的
卸载
事件中的
窗口.name
容器中



注意不要仅使用onunload方法,因为mobile safari不会记住数据。要让mobile safari在
window.name
中保存数据,您必须在onload之前手动保存数据。从本质上讲,为了实现最大的兼容性,您必须同时执行两项操作:保存在onunload中;每当设置新数据时手动保存。

只是澄清一下,IE7中是否包含JSON解析器?它在IE7中本机不可用。是的,我正在使用Crockford的json2.js for不
窗口。name
仅在浏览器窗口中工作?您的页面是否会自行设置该值并覆盖浏览器给定的初始值?这就是重点。我无法覆盖该值。这个值总是“bob”。这个脚本不受这个bug的影响:所以它一定是我正在做的事情。。。虽然我似乎无法确定为什么他的作品和我的作品不一样。只是澄清一下,你是否在IE7中包含了JSON解析器?它在IE7中本机不可用。是的,我正在使用Crockford的json2.js for不
窗口。name
仅在浏览器窗口中工作?您的页面是否会自行设置该值并覆盖浏览器给定的初始值?这就是重点。我无法覆盖该值。这个值总是“bob”。这个脚本不受这个bug的影响:所以它一定是我正在做的事情。。。虽然我似乎无法确定为什么他的作品和我的作品不一样。window.name是一种在页面卸载后记住内容的方法,但当页面重新加载时,您建议的变量就消失了。没错,只是不知道它被用作本地存储。也许这一页会有帮助。。。即使在Internet Explorer 6中,也要寻找经过测试和工作的用户。您应该使用@来解释您的评论指向的用户。现在看起来你在和我说话,但是你应该给@Bart发送建议,我不是那个想要解决问题的人。第二部分是对@Brat的一个有用的提示。无论如何,谢谢你的留言。不能在一个命令中提及两个@。您发送的链接不适用于所有浏览器,更不用说IE window.name了。它是一种在页面卸载后记住内容的方法,您建议的变量在页面重新加载时消失。OK,您是对的,只是不知道它被用作本地存储。也许这一页会有帮助。。。即使在Internet Explorer 6中,也要寻找经过测试和工作的用户。您应该使用@来解释您的评论指向的用户。现在看起来你在和我说话,但是你应该给@Bart发送建议,我不是那个想要解决问题的人。第二部分是对@Brat的一个有用的提示。无论如何,谢谢你的留言。不能在一个命令中提及两个@你发送的链接不适用于所有浏览器,更不用说IE了
// page unload event
if (window.addEventListener) window.addEventListener("unload", Save, false);
else if (window.attachEvent) window.attachEvent("onunload", Save);
else window.onunload = Save;