我正在使用Optimizely guiders.js示例代码:
http://jeffpickhardt.com/guiders/
虽然如果我提取JavaScript代码并将其放在单独的文件中,导引器就不会加载。
以下是经过编辑的HTML:
<html>
<head>
<!-- guider.js requires jQuery as a prerequisite. Be sure to load guider.js AFTER jQuery. -->
<script type="text/javascript" src="jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="guider.js"></script>
<script type="text/javascript" src="guidedTour.js"></script>
<link rel="stylesheet" href="guider.css" type="text/css" />
</head>
<body>
<span id="clock" style="border: 2px solid #333; width: 300px; height: 200px; text-align: center;" onclick="guider.next();">
<br />
<img src="clock.gif" width=150 height=150 />
</span>
</body>
</html>
我在guidedTour.js
中拥有所有JavaScript代码,位于同一目录中。
所有.js
个文件也在同一目录中。在将代码提取到单独的文件中之前,代码已经运行了。
当JavaScript位于单独的文件中时,指南不会加载。
我在Chrome中收到以下错误:
“未捕获的TypeError:无法读取null的属性'clientHeight' 的jquery-1.5.1.min.js:16"
尝试更新版本的jQuery会在guiders.js
上引发错误。
无论如何,这似乎与我将JavaScript代码保留在index.html
。
我为工作代码创建了一个jsfiddle: http://jsfiddle.net/vpMQy/
我不知道如何在单独的文件中使用JavaScript创建类似的jsfiddle,以便我可以重现问题。
是否可以将此JavaScript代码放在单独的文件中?
答案 0 :(得分:11)
始终将代码包装在DOM ready处理程序
中$(document).ready(function() {
//your code here
});
或者简写
$(function() {
//your code here
});
或者将您的脚本放在文档的最后body
:
//...
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="myScript.js"></script>
</body>
在准备好DOM之前,你不会有问题。 =]