【发布时间】:2010-11-09 14:01:21
【问题描述】:
查看 Filament Group 的 this demo 使用他们的 Progressive Enhancement enhance.js 库
修改为:-
<script type="text/javascript" src="../_shared/EnhanceJS/enhance.js"></script>
<script type="text/javascript">
// Run capabilities test
enhance({
loadScripts: [
{src: 'js/excanvas.js', iecondition: 'all'},
'../_shared/jquery.min.js',
'js/visualize.jQuery.js',
'js/example.js'
],
loadStyles: [
'css/visualize.css',
'css/visualize-dark.css'
]
});
alert($);
</script>
我在警报中收到“$ 未定义错误”,可能是因为 jQuery 尚未加载。
注意 - alert($) 仅用于调试 - 我正在尝试用它做一些事情,例如$('some-selector') - 并且没有 $(handler) 或 $(document).ready 等也不起作用 - jquery 未加载,$ 未定义。
enhance 的 onScriptLoaded 看起来应该可以解决问题,但如果我添加了
onScriptsLoaded:[runMyCode()]
以后
function runMyCode()
{
alert("runMyCode was called");
alert($);
}
第一个警报有效,但 $ 仍未定义。
如果我在按钮的单击事件上调用 runMyCode,它确实有效。
所以问题是 - 一旦所有脚本都完成了 enhance.js 的加载,你如何运行代码?
附注在 IE8/FF3/Chrome7 中验证了同样的问题
【问题讨论】:
-
对于调试,您应该使用控制台和
console.log($)来查看对象的树状资源。 -
@Robert - 它的 $(document).ready 不是 $(document).read - 回滚您的编辑。 api.jquery.com/ready
标签: javascript jquery progressive-enhancement