[英]JavaScript, Doctype, and Firefox
我有
<!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" xml:lang="en" lang="en">
<head>
<title>Function test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<script type="text/javascript">
function doFunction(towindow)
{
towindow.value='2';
}
</script>
</head>
<body>
<div>
<textarea id="outputarea" rows="6" cols="60"></textarea> <br />
<button type="button" onclick="doFunction(outputarea)">doFunction </button>
</div>
</body>
</html>
这不起作用。 单击按钮时,没有任何反应。
如果我删除<!DOCTYPE ....
那么一切正常。
我想保留DOCTYPE进行验证,我从W3schools网站上找到了这个确切的声明。 代码确实有效。 我使用的是Firefox 10.0。 当我使用Chrome 27.0.1453.116时,问题不会发生。 此外,当我使用资源管理器10时,不会发生此问题。
似乎JavaScript,DOCTYPE声明和Firefox之间存在问题。
问题是什么? 我该如何解决这个问题?
(我看到其他问题(参见例如this-1 , this-2 , this-3 , this-4 )和一些相同的问题,但他们没有帮助)
问题不在于DOCTYPE; 可能是因为Firefox 10(现在很老了BTW)根据DOCTYPE不同地解释代码,但真正的问题是你的Javascript。
您的代码onclick="doFunction(outputarea)"
并不正确; 一些浏览器会猜测你想要具有ID outputarea
的元素,但这不是标准行为。 你应该做这样的事情:
<script type="text/javascript">
function doFunction(towindowId)
{
var towindow = document.getElementById(towindowId);
towindow.value='2';
}
</script>
...
<button type="button" onclick="doFunction('outputarea')">doFunction </button>
此外,您应该始终检查Firefox的错误控制台中的Javascript错误 - 我在Firefox 10中测试了您的原始代码并得到错误“错误:toWindowId未定义”。
很少需要FYI,XHTML(严格模式或其他); 您可能只想考虑常规HTML5文档类型<!DOCTYPE html>
,除非您有特殊原因需要XHTML。 请参阅此文章: http : //www.webdevout.net/articles/beware-of-xhtml 。 另请注意,W3Schools信息通常不是最新的当前趋势和实践。
所有新网页都需要 doctype。 您没有将您的网页作为XHTML提供,因此使用您现在拥有的doctype毫无意义。 使用新的浏览器是因为它将所有浏览器放回到您想要的标准模式的IE6中,并且它更短更容易记忆。 <!DOCTYPE html>
Firefox 10是一个古董,我不知道为什么你认为有人使用它。 忽略它。 目前的版本是21。
所以只需将前两行改为此版本,它就适用于当前版本的Chrome和Firefox:
<!DOCTYPE html>
<html>
没看IE。
此外,删除元素。 这仅适用于将您的页面保存到桌面而不是通过互联网查看的人(除非您需要)。 此外,脚本标记的type属性不再需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.