繁体   English   中英

单击外部链接并仅打开一个标签页/窗口后重定向

[英]Redirect after clicking an external link and only open one tab/window

我为应用程序的外部客户端创建了一个jsp,用于链接到Web客户端。 他们可以指定它们在URL中的哪个客户端,以便在链接打开一个窗口时将其命名,而来自该客户端的任何其他链接也将在同一窗口中打开。 这是一个示例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属性不是答案。

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

如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>

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

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

原因:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM