我尝试通过JavaScript为我的电子邮件制作垃圾邮件过滤器。不幸的是,验证码不会传递代码。谁能说出http://jaakkospage.comyr.com/中代码中的错误是什么?
If you want to contact, please send me an
<script type="text/javascript">
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
{ coded = "sppDD0.s.fBxxpYp@ULpJY.Q0L?fjHsBQi=LpJY 5m0L iVB cBHxpUB"
key = "r3uREWBMXSnIezJANyZHi2Dq8btKkGv7PQFd4VTc51xh9wf0pCLYsoaUmljO6g"
shift=coded.length
link=""
for (i=0; i<coded.length; i++) {
if (key.indexOf(coded.charAt(i))==-1) {
ltr = coded.charAt(i)
link += (ltr)
}
else {
ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
link += (key.charAt(ltr))
}
}
document.write("<a href='mailto:"+link+"'>e-mail.</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>
第42行,第27栏:字符“;”不 允许在属性规范中 列表
for (i=0; i<coded.length; i++) {
第42行,第27列:元素 “coded.length”undefined
for (i=0; i<coded.length; i++) {
您已使用名为的元素 在你的文件上面,但是 您正在使用的文档类型没有 定义该名称的元素。这个 错误通常由以下原因引起:
错误使用“严格”文档 键入包含使用框架的文档 (例如,您必须使用“框架集” 获取“”的文档类型 元素),通过使用供应商专有 扩展名,如“”或 “”(这通常是由 使用CSS实现所需 反而影响)。通过使用大写 XHTML中的标签(在XHTML属性和 元素必须都是小写的。)
答案 0 :(得分:1)
我建议将javascript移动到单独的.js文件中。这应该允许HTML通过验证。这种分离是一种很好的做法。
答案 1 :(得分:1)
此处的基本问题是您的<script>
标记包含<
符号。 XHTML解析器将其视为新标记的开头,它认为它被称为coded.length
。
有一些可能的解决方案。一个是打开评论分隔符。您有结束分隔符-->
,但不是开始分隔符。您只需在<!--
之后添加包含<script>
的行即可使其生效。当我在您的页面上尝试此操作时,虽然我收到有关<noscript>
元素的验证错误。 <noscript>
似乎在XHTML 1.1中存在一些严重问题,我不确定如何将其用于工作和验证。
当然,您似乎使用mime类型text/html
为您的XHTML提供服务,这在技术上是不正确的,这意味着浏览器实际上将其解析为HTML,而不是XHTML。请参阅Sending XHTML as text/html Considered Harmful以获取有关为什么这是一个坏主意的一些信息(尽管该页面上的一些原因已经过时,因为它们指的是基本上没有人再使用的旧浏览器)。
另一种解决方案是从XHTML doctype切换到HTML5。这是一种新的,更易于使用的doctype,它更基于浏览器实际解析HTML的方式。您所要做的就是将<!DOCTYPE html SYSTEM ...>
声明更改为<!DOCTYPE html>
。而已!好吧,您还必须删除</meta>
关闭代码,或将其转换为自闭元素<meta ... />
。在这种情况下,您不需要围绕<script>
元素内容的注释;解析器将忽略所有<
个符号,直到下一个</script>
。
答案 2 :(得分:0)
您的代码未验证的原因是因为在<script></script>
内,您必须使用HTML权限来表示HTML代码,例如<
>
&
解析器抱怨<coded.length element not defined
因为验证程序在那里看到了HTML标记
最简单的选择是将脚本标签中的内容转移到HTML实体,更好的方法是将您的JS放在不同的文件中,链接到您的页面