在每个html页面中,未知数量的带有mailto href的锚点。装入量表时必须做两件事。
a)用脚本替换这些mailto锚点,
b),然后执行脚本,以便访问者可以看到脚本的输出。
由于某种原因,它不起作用。
在头部
<script>
var eml = {
info: 'aW5mb0BleGFtcGxlLmNvbQ==',
serv: 'c2VydmljZUBleGFtcGxlLmNvbQ==',
show: function(em) {
document.write(window.atob(em))
}
};
</script>
在体内,这起作用:
<script>eml.show(eml['serv'])</script>
在体内,这不起作用:
<a href="mailto:@serv">more information</a>
<script>
var i, href, regx, str;
var els = document.querySelectorAll('a[href*="mailto:"]');
for (i = 0; i < els.length; i++) {
href = els[i].href;
regx = new RegExp('^mailto:@[a-zA-Z0-9]+$');
if (regx.test(href) && eml[href.substr(8)]) {
str = "<script>eml.show(eml['" + href.substr(8) + "'])<\/script>";
console.log(str);
els[i].outerHTML = str;
}
}
</script>
无论是否使用jQuery,我都尝试过很多代码段,但到目前为止没有任何效果。
完成这项工作的方式是什么?
感谢。罗纳德
答案 0 :(得分:1)
您需要调用函数,而不是写入文档:
await
var eml = {
info: 'aW5mb0BleGFtcGxlLmNvbQ==',
serv: 'c2VydmljZUBleGFtcGxlLmNvbQ==',
show: function(em) {
document.write(window.atob(em))
}
};
var i, href, regx, str;
var els = document.querySelectorAll('a[href*="mailto:"]');
for (i = 0; i < els.length; i++) {
href = els[i].href;
regx = new RegExp('^mailto:@[a-zA-Z0-9]+$');
if (regx.test(href) && eml[href.substr(8)]) {
eml.show(eml[ href.substr(8)]);
}
}