0

我在 DotNetNuke 工作,但这似乎并不是严格意义上的 DNN 问题。

我在我的名为 FormatEmail 的模块中使用了 DNN 提供的方法,它使用 document.write 来写出一封电子邮件,如下所示:

<script language="text/javascript">

<!--
  document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62))
// -->

</script>

我刚刚安装了 DNN 5,我知道它包括 jQuery 以及代码库的其他附加功能。jQuery 会阻止 document.write 代码工作吗?

DNN 是否应该使用另一种方法来隐藏机器人的文本?

我应该停止使用这种方法来隐藏我的电子邮件地址吗?

更新:该页面未使用 xhtml。

4

3 回答 3

5

我不知道这是否发生了,但是如果您的站点告诉浏览器它是严格的 XHTML,那么它将无法工作document.writedocument.writeln我相信要发生这种情况,您必须使用严格的 DOCTYPE 并将Content-Type标头设置为application/xml+xhtml而不是text/html(许多服务器下的默认值)。这是因为以这种方式操作 DOM 可能会破坏它。例如,如果我将以下内容放在经过验证的网页的中途:

<script type="text/javascript">
<!--
    document.write("</body>");
// -->
</script>

该文档将验证并符合 XHTML,但不能在大多数浏览器中工作。

另一种方法是创建一个 DOM 节点,应该在其中插入电子邮件地址,并在页面加载时插入它。例如:

<p>My email address is <span id="email"></span>.</p>
<script type="text/javascript">
<!--
    document.body.onload = function() {
        document.getElementById("email").textContent = String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62);
    };
// -->
</script>

或者,当您设置了 jQuery 时:

<p>My email address is <span id="email"></span>.</p>
<script type="text/javascript">
<!--
    $( function() {
        $("#email").text(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,34,62,119,101,98,109,105,110,64,97,116,101,110,118,101,108,100,116,46,111,114,103,60,47,97,62));
    } );
// -->
</script>
于 2009-05-16T00:47:40.250 回答
2

我想我在 DNN 错误跟踪器中找到了具体答案:

输出应该是:

<script type="text/javascript">

//<![CDATA[
 document.write(String.fromCharCode(60,97,32,104,114,101,102,61,34,109,97,105,108,116,111,58,84,101,115,116,64,106,101,102,102,109,97,114,116,105,110,46,99,111,109,34,62,84,101,115,116,64,106,101,102,102,109,97,114,116,105,110,46,99,111,109,60,47,97,62))
//]]>

</script>

这似乎解决了我的网站(没有运行 XHTML)的问题。

该错误位于此处

于 2009-05-16T01:29:26.517 回答
0

杰夫,

您确实找到了正确的解决方案,但老实说,我不确定这样做的好处。是的,电子邮件可能会被删除,但至少在我看来,这个过程实在是太过分了。无需运行 javascript,只需呈现电子邮件链接。

对于您手头的非常具体的问题,这只是我的 0.02 美元。

于 2009-05-16T01:46:55.303 回答