Sim*_*n H 19 html hyperlink target
我正在开发一个网站,用户可以在此网站上更改必须确认的设置才能生效.
确认是通过我通过电子邮件发送的链接完成的.在网站的HTML中我使用这个小片段:
<script type="text/javascript">window.name="mysite";</script>
Run Code Online (Sandbox Code Playgroud)
在我使用的HTML电子邮件中
<a href="..." target="mysite">Click me</a>
Run Code Online (Sandbox Code Playgroud)
但Chrome总是打开新标签,而不是一次性打开它们.
这是偶数还是由于某些原因被禁止?
由于安全原因,Gmail等网络邮件平台倾向于修改电子邮件的某些HTML代码.
他们显然删除了电子邮件可能包含的任何JavaScript代码.但是它们也会更改(或者如果没有添加)每个锚元素的目标属性并将它们设置target="_blank"为以避免用户被取出Gmail(在这种情况下).
不幸的是,每个webmail平台都有自己的行为,因此,你想做的事情不会在每个webmail平台上运行.
如果您想要做的是阻止用户打开同一页面的多个标签,(*请参阅更新1),请记住,一旦用户输入发送的URL,您就可以使用网络套接字关闭上一个标签页通过电子邮件.以socket.io为例.
更新1
使用WebSockets无法做到这一点.没有办法关闭一个没有使用javascript打开的窗口,它只能被它的父母关闭.
这是一个非常有趣的想法.我喜欢.唉,在现代浏览器中,您似乎无法再关闭未通过javascript打开的窗口.因此,如果您不允许在电子邮件中运行javascript,那么您可以做的最好的事情是将原始页面重定向到"谢谢"页面并将其留在浏览器的选项卡中(但不再等待构造).像这样:
PleaseConfirm.html:
window.name="need_redirected";
Run Code Online (Sandbox Code Playgroud)
Confirm.html:
var w = window.open("", "need_redirected");
if (w)
w.location="ThankYou.html";
Run Code Online (Sandbox Code Playgroud)
当然,对于旧IE,我仍然会尝试在ThankYou.html中关闭旧窗口:
window.top.close();
Run Code Online (Sandbox Code Playgroud)
当然,您仍然可以尝试设置目标,以防它起作用,并且您可以尝试在标记上添加onclick属性,原因相同:
<a href="confirm.html" target="need_redirected" onclick="window.open('confirm.html', 'need_redirected');">click here </a>
Run Code Online (Sandbox Code Playgroud)
但这似乎是你能做的最好的事情.游民.