【发布时间】:2014-07-24 01:39:55
【问题描述】:
我正在打开一个这样的窗口:
var w = window.open("", "window-name", opts);
然后我使用一些动态数据创建一个 URL 并将窗口设置为该 URL,如下所示:
w.location.href = url;
我的问题是我需要检索之前设置到窗口的 URL 以便稍后进行编辑。这样做不起作用:
var url = w.location.href;
因为在我的情况下这违反了安全性并触发了异常。
我不能只将 URL 保存为“全局”变量,因为这需要跨页面工作。我不想使用 cookie,因为当窗口关闭时,URL应该被重置。使用 cookie 会增加更多复杂性,因为它会迫使我在窗口关闭之前进行清理,并且会增加错误风险。我会用它作为最后的手段。
在将 URL 设置为不同域上的某个内容后,有什么方法可以检索窗口实例的 URL?
【问题讨论】:
-
如果不设置过期时间,则窗口关闭时不需要清理cookie。这会将 cookie 设置为在浏览器会话结束时过期,以便浏览器为您清理它。在任何情况下,我能想到的唯一另一件事就是使用服务器端会话 var 将 url 从一个页面保存到另一个页面(例如,作为 js var 输出)。
-
或者,您可以将 url 作为 url=[url] 参数传递给每个页面。但这也可能很快变得非常混乱。或者你可以使用
sessionStorage虽然它是 html5 所以可能对你来说不够兼容 -
@CrayonViolent:每次关闭弹出窗口时都必须清除 cookie。只要弹出窗口打开,我收集的数据就应该持续存在,这就是为什么保存数据在窗口引用上本来是完美的,如果不是因为安全违规。
标签: javascript browser browser-history browser-tab