3

我正在打开一个这样的窗口:

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?

4

2 回答 2

0

使用这样的window.name属性...

var w = window.open('http://www.example.com', 'www.previousurlhere.com', opts);

然后,当新窗口打开时(假设它是您的),您可以从新窗口中获取window.name数据,例如...

var previousUrl = window.name;

那应该这样做。

于 2014-06-03T16:39:32.593 回答
-1

浏览器不会告诉您以前访问过的其他域的 URL 的状态。出于安全原因,会发生这种情况。

如果你在同一个域上工作,也许你可以查询History API来获得你需要的东西。或者,您可以通过 LocalStorage 或其他解决方案将访问的 URL 存储在客户端上。

于 2014-06-03T16:22:38.360 回答