动态加载的JS回调在304上不起作用
Cached Dynamically loaded JS callback not working on 304
getScrtip它不缓存动态加载的js,所以我有这个自定义的。
jQuery.loadScript = function (url, callback) {
var load = true;
//check all existing script tags in the page for the url
jQuery('script[type="text/javascript"]')
.each(function () {
return load = (url != $(this).attr('src'));
});
console.log('load is ' + load);
if (load) {
//didn't find it in the page, so load it
jQuery.ajax({
type: 'GET',
url: url,
dataType: 'script',
cache: true,
ifModified: true,
success: callback
});
} else {
//already loaded so just call the callback
if (jQuery.isFunction(callback)) {
callback.call(this);
};
};
};
它在缓存部分工作,但是当我使用f5和304刷新页面时不工作,下一次尝试动态加载js时收到。对于在加载的js中定义的函数,我得到未定义的函数。下面是我如何调用这个相同的代码(完美地使用$。$.loadScript)
function getvm() {
return $.getScript("Scripts/ViewModel/cachedvm-1.0.0.js")
}
function functionthatinvokesjsload() {
$.when($.get(myUrl), getvm())
.done(function(a1, a2) {
initializeVm();
});
}
我得到的错误是initializeVm()没有定义,当我得到304在js加载。第一次就成功了。但如果我后来在浏览器调试窗口中手动执行,它确实会找到该函数。它似乎是我试图调用js之前加载到DOM,但不确定为什么会发生这种情况。
我不得不使用
jQuery.loadScriptNoCallBack = function (url) {
return $.ajax({
type: 'GET',
url: url,
dataType: 'script',
cache: true,
ifModified: true
});
};
相关文章:
- Javascript点击事件回调不起作用
- STOMP web套接字回调不'不起作用
- Angular Js 尝试从主按钮回调动态更改模态文本并且不起作用
- socket.io回调函数不起作用
- 如果我移除animateTo参数,.remove()回调函数将不起作用
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用
- Javascript中的AJAX-命名回调;不起作用
- JQuery Smart Spinner:回调属性不起作用
- 类似FaceBook的按钮回调不起作用
- jQuery地址在回调中不起作用
- 回调事件不起作用-使用猫头鹰旋转木马
- spawn() 函数的“关闭”回调在 grunt 插件中不起作用
- Javascript回调函数不起作用
- 使用回调的递归Javascript函数不起作用
- j查询行在回调函数中不起作用
- 引导框.js回调不起作用
- PhoneGap 3.0.0 Tanelih 蓝牙插件在 Android 上已启用错误回调不起作用
- for循环,回调,一起超时,超时似乎不起作用
- Javascript“回调”函数不起作用
- 使用 jQuery $.ajax 的 JSONP 响应/回调不起作用