Jamebo

导航

XHTML中需要书写独立的封闭Script标签

今天在学习JavaScript时,遇到一个问题:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Javascript Study</title>
    <script type="text/javascript" src="test.js" />
</head>
<body onload="load()">

</body>
</html>

 上面的load()函数在FF下没有问题,但是在IE下不能成功。Google了一下,有文章描述:

 
http://www.javaddicts.net/blog/index.php/2006/09/19/external-javascript-files-and-script-tags/
 

I spent half of the day hunting down a nice issue related to external JavaScript files and a group of <script> tags with both external and inline-declared JavaScript. The problem and its solution is just so plain dumb that I just had to post it.

I had a JavaScript block that declared some global variables. That block just didn’t get parsed in Internet Explorer and Firefox, but worked just fine in Safari. Before the block two external JavaScript files were included, like this:

<script type="text/javascript" src="foo.js"/>
<script type="text/javascript" src="bar.js"/>
<script type="text/javascript">
    var myVar = "something";
</script>

The block containing the variable declaration never got executed. The reason? Both Firefox and Internet Explorer went straight ahead and parsed the stuff until the ending </script> and because of the fact that <script type="text/javascript"> isn’t really valid JavaScript code, both couldn’t parse the real stuff, i.e. the variable declaration. Neat, no? So to keep it real, you gotta write the following:

<script type="text/javascript" src="foo.js"></script>
<script type="text/javascript" src="bar.js"></script>
<script type="text/javascript">
    var myVar = "something";
</script>

As an experiment I tried declaring the HTML as being XHTML, but even that didn’t help. Or maybe I have been staring at this code for too long.

另外一篇safari的文章也挺有意思:
 http://webkit.org/blog/68/understanding-html-xml-and-xhtml/

posted on 2008-01-10 16:19  一直在学习...  阅读(756)  评论(0编辑  收藏  举报