我正在尝试构建一个干净地将HTML表示与JavaScript行为分开的网站。
为了获得这方面的经验,我创造了一个简单的“Hello,world!”网站有一个页面和一个行为。该页面包含“Hello,world!”消息,JavaScript通过警告框向用户显示类似的消息。
为了实现这一点,我在我的本地机器上创建了两个名为index.html和sayhello.js的文件。
HTML文件index.html包含:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Hello, world!</title>
</head>
<body>
<h1>Helo, world!</h1>
<p>That's all for now.</p>
<script type="text/javascript" src="sayhello.js"/>
</body>
</html>
JavaScript文件sayhello.js包含:
alert('Hello, world!');
我的操作系统是Windows 7。
我在Opera 11中打开index.html并看到“Hello,world!”页面打开后会立即弹出对话框。
在Firefox 4,Chrome 11和IE 9中,我没有看到弹出窗口。好像JavaScript被忽略了。
为什么警报框不会出现在所有浏览器中?我该怎样做才能让它全部显示出来?
答案 0 :(得分:11)
<script>
标记不是自动关闭的。你需要写
<script type="text/javascript" src="sayhello.js"></script>
答案 1 :(得分:1)
几乎所有浏览器都不喜欢script
代码的自动结束标记。
所以只需将其替换为:
<script type="text/javascript" src="sayhello.js"></script>
答案 2 :(得分:0)
在看到其他简洁的答案之后,我做了一些阅读,发现根本问题是我混淆了HTML和XML构造。
根据这个post from the WebKit team,HTML中的自闭标签可能会起作用,因为HTML解析器可以处理错误,而不是因为它们理解自动关闭语法:
首先是XML和XHTML 标准化,不支持浏览器 他们原生。至少启用 部分使用XHTML,W3C出现了 用“HTML兼容的东西” XHTML”。这是一套指导方针 用于制作有效的XHTML文档 仍然可以或多或少地被处理为 HTML。基本的想法是使用 标签的自动关闭语法在哪里 HTML不需要关闭标记,例如 img,br或link,带有额外空间 在斜线之前。所以我们一直很受欢迎 图像示例如下所示:
<img src="funfun.jpg" />
。细节 在附录C中描述 XHTML 1.0标准。重要的是要注意这一点 一种黑客,取决于德 HTML的事实错误处理行为 解析器。他们真的不明白 XML自我关闭语法,但是 用这种方式写东西就是这样 将/视为属性,然后 放弃它,因为它不合法 属性名称。如果你试图这样做的话 类似的东西,他们不会 理解div应该是 是空的。
似乎对我来说最安全的事情就是长期关闭所有标签。