2014-09-21 74 views
6

我有一个非常简单的HTML和JavaScript。我违反了一些JavaScript规则吗?

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script> 
     function goodbye() { 
     document.write ("good bye"); 
     } 
     goodbye(); 
    </script> 
</body> 
</html> 

结果显示一个Hello和再见字符串。我感动再见功能,以它自己的文件“goodbye.js”所以,我的第一个HTML现在看起来是这样

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'> 
     goodbye(); 
    </script> 
</body> 
</html> 

现在,如果我再次运行HTML,它只显示你好。我原本没想到。发生了什么 ?

+0

。其内容应该是空的。你需要另一个脚本块来引用这个函数再见 – 2014-09-21 14:03:37

+0

啊,我看到了很多谢谢。 – tadpole 2014-09-21 14:05:34

+0

是的,你用'document.write'。这是一个不成文的规定,你不应该这样做。 – 2014-09-21 14:15:45

回答

13

这是W3C specification说:

脚本可以在SCRIPT元素内容内外部文件中定义。如果未设置src属性,则用户代理必须将元素的内容解释为脚本。如果src具有URI值,则用户代理必须忽略元素的内容并通过URI检索脚本。

所以叫goodbye()正确的做法是第一个与src属性后,再增加一项script标签。

+0

+1规范 – Seiyria 2014-09-21 18:38:26

+0

+1引用规范 – Brandon 2014-09-21 18:55:02

3

我相信你需要两个脚本标签。与src的一个应该是空的,因为它的内容是由src定义和您的在线goodbye();被忽略。制作第二个标签,其中src用于goodbye的嵌入式调用。

2

当您添加src属性<script>标签浏览器会忽略其下的所有内容。所以,你需要添加额外的<script>标签:

<script src='goodbye.js'></script> 
<script> 
    goodbye(); 
</script> 
2

你没有得到使用脚本元素下载一个脚本,并把它作为一个嵌入式脚本。

<html> 
<body> 
    <h1>Test function</h1> 
    <p>Hello</p> 
    <script src='goodbye.js'></script> 
    <script> 
     goodbye(); 
    </script> 
</body> 
</html> 

或者,您可以添加再见();打电话给goodbye.js结束。

2

你不能有src属性加文字内容到script元素。如果有src属性,则将使用该属性,并忽略文本内容。

<script src='goodbye.js'></script> 
<script>goodbye();</script> 
当你包括外部js文件使用脚本标记
相关问题