这个演示 从细丝组使用其渐进式增强 增强 图书馆

修改以给予: -

<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尚未加载。

注意 - 警报($)仅用于调试 - 我正在尝试使用该(例如$ $('Some -Selector')做某事 - 并且没有$(处理程序)或$(DOMISTLE)或$(DOMOTERD)。DREADYET等也不起作用 - jQuery没有加载,$未定义。

增强 OnScript负载 看起来他应该做纠缠,但是如果我添加

onScriptsLoaded:[runMyCode()]

然后

function runMyCode()
{
    alert("runMyCode was called");
    alert($);
}

第一个警报起作用,但$仍未定义。

如果我在按钮的单击事件上调用runmyCode,则可以工作。

因此,问题是 - 一旦所有脚本都用eNHANES.JS完成加载后,如何运行代码?

PS在IE8/FF3/Chrome7中验证的同一问题7

有帮助吗?

解决方案

我认为这就是您所追求的,请注意 onScriptsLoaded 直接用作回调, ,因此它应该是一个函数,而不是数组:

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'
   ],
   onScriptsLoaded: function() { alert($); }
});

或更一般地用于函数,仅通过这样的参考:

   onScriptsLoaded: runMyCode

原因 onScriptsLoaded:[runMyCode()] “有点”的作品是 立即地 调用 runMyCode 功能(当时该行运行, 不是 脚本完成时)并从该结果制成数组。脚本完成后,这实际上会出现错误,因为 onScriptsLoaded 预计将是回调功能,而不是数组。

其他提示

我认为这可能是一个问题:

onScriptsLoaded:[runMyCode()]

您是否尝试过(假设数组符号正确):(编辑 - 这是 不是 正确的)

onScriptsLoaded: [runMyCode]

?第一个方式,您在设置库时调用您的功能。您只想传递对功能的引用。

编辑 实际上应该是:

onScriptsLoaded: runMyCode

我不知道阵列来自哪里。绝对没有在“ Enhance.js”文档中提及。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top