我的网站上有我的电子邮件地址,人们开始使用该地址发送垃圾邮件。所以我决定我需要升级网站上电子邮件地址的安全性。
我更改了您必须单击电子邮件地址才能查看的网站(或点击它以打开邮件客户端)。
未处理的HTML如下所示:
<a href='#' address='mailto:person(at)example(dot)co(dot)za'>Click here to view</a>
JavaScript看起来像这样,并在window.load
$("a[address]").click(function (event) {
event.preventDefault();
var address = $(this).attr("address");
while(address.indexOf("(at)") !== -1){address = address.replace("(at)", "@")}
while(address.indexOf("(dot)") !== -1){address = address.replace("(dot)", ".")}
$(this).attr("href", "mailto:" + address);
$(this).html(address);
})
用户点击a
标记。电子邮件地址显示正确。
但是如果我再次点击它(请记住href现在是mailto:
),它就不会打开邮件客户端。
如何强制浏览器更新mailto
代码的初始点击事件。
答案 0 :(得分:2)
如果您想点击链接以获得关注链接,请不要说event.preventDefault();
。
答案 1 :(得分:1)
我找到了解决方案。我在JS的末尾添加了以下代码:
$(this).unbind("click");
这是因为在第一次单击标记后仍然绑定了单击。知道是否有办法强迫&#34;强迫&#34;使用JS打开邮件客户端。
新的JS代码如下所示:
$("a[address]").click(function (event) {
event.preventDefault();
var address = $(this).attr("address");
while(address.indexOf("(at)") !== -1){address = address.replace("(at)", "@")}
while(address.indexOf("(dot)") !== -1){address = address.replace("(dot)", ".")}
$(this).attr("href", "mailto:" + address);
$(this).html(address);
// this is the new code
$(this).unbind("click");
})
答案 2 :(得分:0)
您可以检查该元素是否具有属性,并在单击该属性后将其删除,然后在该属性存在时仅删除preventDefault
。
$("a[address]").click(function (event) {
if($(this).attr('address')){
event.preventDefault();
var address = $(this).attr("address");
while(address.indexOf("(at)") !== -1){address = address.replace("(at)", "@")}
while(address.indexOf("(dot)") !== -1){address = address.replace("(dot)", ".")}
$(this).attr("href", "mailto:" + address);
$(this).html(address);
$(this).removeAttr('address');
}
});