类型属性为元素的JavaScript问题
只要不设置类型属性,我就可以让脚本运行。但是,如果没有type属性,我无法为XHTML验证页面。一旦我设置了它,我的错误消息就会消失,但随后脚本就无法运行。下面是一段简短的代码类型属性为元素的JavaScript问题,javascript,xhtml,Javascript,Xhtml,只要不设置类型属性,我就可以让脚本运行。但是,如果没有type属性,我无法为XHTML验证页面。一旦我设置了它,我的错误消息就会消失,但随后脚本就无法运行。下面是一段简短的代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xht
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>John Whiteker's Home Page</title>
<link rel="stylesheet" type="text/css" href="project.css" />
<script><!-- This is my error saying that I need to set a type attribute -->
function myFunction()
{
alert("Hello! I am an alert box!");
}
</script>
</head>
<body>
HTML5是允许您省略type属性并采用text/javascript的规范。每隔一个HTML版本,type属性都是必需的 您正在使用XHTML Doctype。如果要使用HTML5,请在顶部包含此Doctype:
<!DOCTYPE html>
来自MDN:如果缺少此属性,则脚本将被视为JavaScript,参考HTML5
参考资料:HTML5是允许您省略type属性并采用text/javascript的规范。每隔一个HTML版本,type属性都是必需的 您正在使用XHTML Doctype。如果要使用HTML5,请在顶部包含此Doctype:
<!DOCTYPE html>
来自MDN:如果缺少此属性,则脚本将被视为JavaScript,参考HTML5
参考:使用HTML5 doctype,不要指定类型属性,除非它们不是默认属性。另外,不要太担心验证。这对保持秩序很好,但你不需要
使用HTML5 doctype,不要指定类型属性,除非它们不是默认属性。另外,不要太担心验证。这对保持秩序很好,但你不需要
我已经在IE、FF和Chrome的最新稳定版本中对此进行了测试。脚本工作正常,并且是有效的XHTML1.0 关于脚本无法运行的原因,我唯一的猜测是因为没有调用函数。有两个简单的选择: 选择1 使用 例1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>John Whiteker's Home Page</title>
<link rel="stylesheet" type="text/css" href="project.css" />
<script type="text/javascript">
//<![CDATA[
<!--
function myFunction() {
alert("Hello! I am an alert box!");
}
//-->
//]]>
</script>
</head>
<body onload="myFunction()">
</body>
</html>
这两种方法都将生成有效的XHTML1.0Strict,脚本将正常运行。有关window.onload VS的更多信息,请查看这篇很棒的SO帖子
另外,在编写XHTML时,最好包括
//<![CDATA[
<!--
就在你的标签前
这一特定项目可能不需要它们,但需要一个。另见。也许你的教授会给你加分,因为他们:
干杯
Lord我已经在IE、FF和Chrome的最新稳定版本中对此进行了测试。脚本工作正常,并且是有效的XHTML1.0 关于脚本无法运行的原因,我唯一的猜测是因为没有调用函数。有两个简单的选择: 选择1 使用 例1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>John Whiteker's Home Page</title>
<link rel="stylesheet" type="text/css" href="project.css" />
<script type="text/javascript">
//<![CDATA[
<!--
function myFunction() {
alert("Hello! I am an alert box!");
}
//-->
//]]>
</script>
</head>
<body onload="myFunction()">
</body>
</html>
这两种方法都将生成有效的XHTML1.0Strict,脚本将正常运行。有关window.onload VS的更多信息,请查看这篇很棒的SO帖子
另外,在编写XHTML时,最好包括
//<![CDATA[
<!--
就在你的标签前
这一特定项目可能不需要它们,但需要一个。另见。也许你的教授会给你加分,因为他们:
干杯
上帝谢谢你,伊恩。我可以求助于你的解决方案,但这是大学作业。讲师想要包含javascript元素的XHTML1.0严格doctype,站点必须通过验证。@JohnWhiteker没关系,我不是想说服你做什么。我只是说-如果不想包含type属性,就必须使用HTML5 doctype。你好像在问为什么它不起作用,所以我解释说。你可以做你想做的任何事情,但是Doctype是没有typeIan它就不能工作的原因,我非常感激。我只是想知道是否有办法让它在我所受的限制下运行。如果我插入典型的javascript类型属性,页面将进行验证,但脚本无法运行。@JohnWhiteker我忍不住认为您发布的javascript不是全部。您现在拥有的代码应该可以正常工作,因此您可能需要发布更多信息来确定问题所在。这很奇怪,虽然它要么验证了,要么成功了,但不是两者都是…谢谢伊恩。我可以求助于你的解决方案,但这是大学作业。讲师想要包含javascript元素的XHTML1.0严格doctype,站点必须通过验证。@JohnWhiteker没关系,我不是想说服你做什么。我只是说-如果不想包含type属性,就必须使用HTML5 doctype。你好像在问为什么它不起作用,所以我解释说。你可以做你想做的任何事情,但是Doctype是没有typeIan它就不能工作的原因,我非常感激。我只是想知道是否有办法让它在我所受的限制下运行。如果我插入典型的javascript类型属性,页面将进行验证,但脚本无法运行。@JohnWhiteker我忍不住认为您发布的javascript不是全部。您现在拥有的代码应该可以正常工作,因此您可能需要发布更多信息来确定问题所在。真奇怪
虽然它要么验证了,要么成功了,但不是两者都成功了……谢谢你。我可以求助于你的解决方案,但这是大学作业。讲师需要包含javascript元素的XHTML1.0严格doctype,并且站点必须通过验证。看来她所要求的可能不是100%可能。谢谢巴恩。我可以求助于你的解决方案,但这是大学作业。讲师需要包含javascript元素的XHTML1.0严格doctype,并且站点必须通过验证。看来她所要求的可能不是100%可能。非常感谢您提供详细的解决方案,塔宾顿勋爵。您的推荐工作完美无瑕,使我能够保持在稍微过时的XHTML类和讲师指定的参数范围内:你们太棒了!有效的XML永远不需要CDATA。如果您希望在任何文本节中包含对XML具有特殊含义的字符,例如,或&,而不将实体转义为,&;,则使用CDATA;。由于Javascript代码通常包含这些字符,通常最好将内联脚本封装在实体标记中,但您仍然可以编写完全有效的XHTML脚本,而无需CDATA。非常感谢您提供的详细解决方案。您的推荐工作完美无瑕,使我能够保持在稍微过时的XHTML类和讲师指定的参数范围内:你们太棒了!有效的XML永远不需要CDATA。如果您希望在任何文本节中包含对XML具有特殊含义的字符,例如,或&,而不将实体转义为,&;,则使用CDATA;。由于Javascript代码通常包含这些字符,所以通常最好将内联脚本封装在实体标记中,但您仍然可以编写完全有效的XHTML脚本,而无需CDATA。