gpt4 book ai didi

javascript - 由于加载 jQuery 时执行/不执行脚本 - 为什么?

转载 作者:行者123 更新时间:2023-11-29 15:35:11 24 4
gpt4 key购买 nike

这是我遇到的问题。试试这个 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 不会执行脚本?你能帮帮我吗?

最佳答案

我认为最好的办法是强制重新触发 onload 事件(如果它已经触发),因为当您加载 jQuery(如果未定义)时,此事件已经触发。这是一个解决方法:

function JsonToHtml(html) {
var items = [];
$.each(html, function (key, val) {
items.push(val);
});

$('body').prepend(items.join(''));
if (document.readyState === 'complete') { // check if document is complete
var evt = document.createEvent('Event');
evt.initEvent('load', false, false);
window.dispatchEvent(evt); // then redispatch onload event
}
}

-DEMO-

关于javascript - 由于加载 jQuery 时执行/不执行脚本 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com