在每个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/

10-10 01:27
查看更多