[英]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.