在每个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的许多代码段,但到目前为止,没有任何效果。
做这项工作的方式是什么?
谢谢罗纳德
最佳答案
您需要调用函数,而不是写入文档:
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)]);
}
}
<a href="mailto:@serv">more information</a>
关于javascript - 为什么Javascript不显示结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55612915/