繁体   English   中英

JavaScript,Doctype和Firefox

[英]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-1this-2this-3this-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM