1

我为我的应用程序的外部客户端创建了一个 jsp,用于链接到 Web 客户端。他们可以在 URL 中指定他们所在的客户端,以便当链接打开一个窗口时,它被命名,并且来自该客户端的任何其他链接都将在同一窗口中打开。这是一个示例网址:

mysite.com/redirect.jsp?fromClient=mine&page=awesome

问题是当您单击此链接时,例如从电子邮件摘要中,它会打开redirect.jsp用于window.open()打开所需页面的页面。从上面的链接,将打开的页面是:

mysite.com/index.jsp?page=awesome

所以我打开了两页,实际上我只想要一个。而且由于我没有使用 javascript 打开第一页(它是一个链接),我不能用window.close()它来关闭它。我尝试过使用window.open('','_parent','')window.open('','_self','')但都不起作用。

我知道必须有比从我的 jsp 页面打开第二个窗口更好的重定向方法,但我不知道更好的方法是什么。想法?

编辑
主要目标是让外部客户端的用户能够单击该客户端中的链接,并让所有链接将它们带到浏览器中的同一窗口/选项卡。我现在正在使用window.open,因为我可以解析链接并获取客户端名称,然后在window.open函数中提供它。

编辑 2
我总是在这些问题上过于含糊。好的,这是设置:

电子邮件摘要包含一个看起来像的链接

mysite.com/redirect.jsp?fromClient=emailDigest&pageNum=4

目前,当点击该链接时,它会打开一个浏览器(duh),然后redirect.jsp页面解析该链接以获取客户端名称,在本例中为 emailDigest。然后它调用window.open('mysite.com/index.jsp?pageNum=4','emailDigest'). 这将创建一个具有该名称的新窗口,emailDigest除非具有该名称的窗口/选项卡已经存在,在这种情况下,它只会使用新窗口更新该窗口中的 URL。

我希望要么能够关闭原始窗口(带有redirect.jsp地址的窗口),要么根本不必打开那个初始窗口。

注意
由于有许多不同的客户端希望能够做到这一点,我不能保证他们将使用 HTML 创建链接,因此target属性不是答案。

4

4 回答 4

2

正确答案是“不,不能这样做”。如果您不使用 Javascript 打开窗口,则无法使用 Javascript 关闭它。我总是必须创建至少 2 个窗口,这不是我们想要的。

于 2013-05-03T22:06:26.270 回答
0

我认为您正在寻找window.location而不是window.open.

于 2012-07-17T21:23:21.557 回答
0

正如上面 haynar 所说,你为什么要打开一个窗口而不是:

<!-- content contains the refresh delay in seconds and the target url -->
<meta http-equiv="Refresh" content="1; URL="http://mysite.com/index.jsp?page=awesome">

或使用 javascript 来做同样的事情:

window.location.href = "http://mysite.com/index.jsp?page=awesome";

两者都可以正常工作,并且会让您打开一个窗口。

要获取命名窗口,请使用目标链接:

<a href="mysite.com/redirect.jsp?fromClient=mine&page=awesome" target="mine">Mysite.com</a>

这将自动设置打开窗口的名称属性。

于 2012-07-17T21:25:46.863 回答
0

请使用 window.location.replace("http://mysite.com/index.jsp?page=awesome");

原因 :

replace(url):用提供的 URL 替换当前文档。与 assign() 方法的不同之处在于,在使用 replace() 之后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用后退按钮导航到该页面。

于 2012-07-17T21:32:09.123 回答