【发布时间】:2015-05-06 00:07:15
【问题描述】:
这是我遇到的问题。试试这个code:
if (typeof jQuery == 'undefined') {
function getScript(url, success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0];
done = false;
script.onload = script.onreadystatechange = function () {
if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
};
};
head.appendChild(script);
};
getScript('http://code.jquery.com/jquery-1.11.2.min.js', function () {
if (typeof jQuery !== 'undefined') {
jQuery(document).ready(function ($) {
MyFunction($);
});
}
});
} else {
jQuery(document).ready(function ($) {
MyFunction($);
});
}
function MyFunction($) {
$.getJSON("http://archiesocial.progettiarchimede.it/widget_privacy/test.aspx?asd=1&callback=?", function (d) {
}).done(function(d) {
JsonToHtml(d);
});
}
function JsonToHtml(html) {
var items = [];
$.each(html, function (key, val) {
items.push(val);
});
$('body').prepend(items.join(''));
}
您会注意到我的代码检查是否加载了 jQuery。如果没有,它会从外部源加载一个版本;而不是检索 JSON,解析它并“执行它”。
如您所见,加载在正文中的脚本根本没有加载(这是我的问题)。
现在,尝试在 fiddle 中选择一个 jQuery 版本/库(1.8.3 可以)并按下播放:您将看到脚本/按钮渲染:脚本已执行!!!
为什么先加载 jQuery(这里)渲染脚本,然后加载 jQuery 不会执行脚本?你能帮帮我吗?
【问题讨论】:
-
浏览器控制台中是否有任何错误?
-
@LShetty 复制问题的 jsFiddle 没有错误
-
看起来问题来自您正在加载的最终脚本 (cdn.iubenda.com/iubenda.js)。但是,该代码已被缩小,因此问题不容易诊断。
-
听起来缩小的脚本正在使用窗口 onload 事件来设置 iframe,然后因为窗口已经加载而不会触发。编辑:是的,它正在使用
w.addEventListener(\"load\", loader, false);或取决于浏览器w.attachEvent(\"onload\", loader);但是在调用此脚本时,窗口已经加载 -
好的。但是为什么之前加载的 jQuery 应该有所作为呢?这是因为,加载外部资源,结束“加载”事件?我该如何解决? @Archer 解决方案似乎有效,但不是那么理想......
标签: javascript jquery