0

我想使用 javascript 方法“saveMailAddress”在我的网站上隐藏电子邮件地址,该方法将“名称”、“域”和“TLD”作为参数。之后,此方法应将节点“a”添加到 DOM 树。

但是我怎样才能找到添加对象的位置呢?

在 HTML 中,它应该看起来像(由 PHP 脚本生成):

<p>
    The E-Mail of user XXX is:
    <script type="text/javascript">
    saveMailAdresses("superman", "comic", "com");
    </script>.
</p>

在 javascript 部分中,应该生成 a-Elemnt:

function saveMailAdresses(name, domain, tld) {
    var link = document.createElement("a");
    link.appendChild(
        document.createTextNode("linktext");
    );
    ...
}

但是如何将新元素放置到调用函数的父元素中呢?

4

3 回答 3

1

也许

<p id='mailadress'>
    <script type="text/javascript">
        document.write(saveMailAdresses("name", "domain", "tld");
    </script>
</p>


function saveMailAdresses(name, domain, tld) {
        return "<a href=''>test</a>";
}
于 2012-04-10T10:00:09.323 回答
0

插入的 A 标记是否在 href 中包含实际的电子邮件地址?如果是这样,那么电子邮件地址仍然可以通过任何现代浏览器的调试工具获得,或者只需单击链接打开电子邮件客户端,地址在“收件人”字段中。

如果您仍然想这样做,您可以在页面的开头创建一个数组,该数组接受一个包含元素的对象和上面要添加的每个地址的三个变量,为每个地址添加一个对象到数组中,然后在页面的末尾循环遍历数组并在每个对象上调用函数(使用带有附加元素参数的方法签名)。

如果您真的想保护您的电子邮件地址,您可以有一个用户填写并回发到服务器的表单,然后让服务器根据表单中的值(即哪个部门的下拉列表)将电子邮件发送给正确的人ETC)。这样,客户将永远不会看到电子邮件地址。

于 2012-04-10T10:32:26.517 回答
0

您可以使用 HTML5data-属性。为简单起见,此示例使用 jQuery,但如果需要,您可以在纯 DOM 中编写它:

<script>
  $(function() {
    $(".email").each(function (){
      var $this = $(this),
          address = $this.data("username") + "@" + $this.data("domain") + "." + $this.data("tld"),
          $link = $("<a>").attr("href", "mailto:" + address).html("link text");

      $this.append($link);
    });
  });​
</script>

<p>
  My e-mail address:
  <span class="email" data-username="someone" data-domain="example" data-tld="com"></span>
<p>

这个 jsFiddle 是一个工作示例。

于 2012-04-10T11:39:34.923 回答