我正在编写HTML并发现即使脚本标记中的类型未设置为javascript,仍然可以评估标记中的javascript代码.
所以我只是想知道脚本标签与类型和没有类型之间有什么区别?
我开发了一个使用jQuery和Ajax的HTML页面.我的<head>标签中有以下几行:
<script language="javascript" type="application/javascript" src="script/jquery.js"></script>
<script language="javascript" type="application/javascript">
function someFunction() {
some code;
}
</script>
...
later - down in the body tag:
<a href="javascript:someFunction();">click here</a>
Run Code Online (Sandbox Code Playgroud)
它在FF和Chrome中运行得非常好,但是当我点击链接时,它就在IE8中抛出了一个"Object Expected".即使启用了脚本调试器,它也无法到达函数的第一行.
我尝试切换到IE7模式,或IE8兼容模式 - 无济于事.
我运气好,找到一个问题,通过谷歌,其中有人建议改变type的<script>标签"text/javascript",现在它在所有3个浏览器上运行.
我的问题是:我做错了什么?是"text/javascript"不是好"application/javascript",或者有更好的(==更正确)解决我的问题?
我创建了一个简单的扩展/隐藏测试脚本:
<html>
<head>
<script type="type/javascript"><!--
function showHide(elementid){
if (document.getElementById(elementid).style.display == 'none'){
document.getElementById(elementid).style.display = '';
} else {
document.getElementById(elementid).style.display = 'none';
}
}
//-->
</script>
</head>
<body>
<div><a href="javascript:showHide('div_1035677');">more...</a></div>
<div id="div_1035677" style="display:none">
HIDDEN CONTENT
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我得到一个我无法理解的错误消息(对象预期在第一行).我在上面的代码中没有看到任何错误.:-(
可能重复:
我应该在我的SCRIPT标签中包含type ="text/javascript"吗?
带有类型的<script>标签和没有类型的<script>之间的区别?
这个:
<script type="text/javascript">
alert("Hello world!");
</script>
Run Code Online (Sandbox Code Playgroud)
还有这个:
<script>
alert("Hello world!");
</script>
Run Code Online (Sandbox Code Playgroud)
似乎完成了同样的事情(至少在chrome,firefox,ie),所以,有什么区别?我为什么要加上那些额外的25个字符?