mirror of https://github.com/layui/layui
fix(layui): 修复 layui.link 重复执行时不触发回调函数的问题 (#2651)
* fix(layui.js): 修复 layui.link 重复执行时回调不触发的问题 这会导致 laydate 无法渲染,行为和 2.9 保持一致 * chore(link): 修改注释错别字 * chore(link): 添加注释 --------- Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>pull/2654/head
parent
985803ec09
commit
b3bfc92374
25
src/layui.js
25
src/layui.js
|
@ -421,7 +421,7 @@
|
||||||
Class.prototype.link = function(href, callback, id) {
|
Class.prototype.link = function(href, callback, id) {
|
||||||
var that = this;
|
var that = this;
|
||||||
var head = document.getElementsByTagName('head')[0];
|
var head = document.getElementsByTagName('head')[0];
|
||||||
var link = document.createElement('link');
|
var hasCallback = typeof callback === 'function';
|
||||||
|
|
||||||
// 若第二个参数为 string 类型,则该参数为 id
|
// 若第二个参数为 string 类型,则该参数为 id
|
||||||
if (typeof callback === 'string') {
|
if (typeof callback === 'string') {
|
||||||
|
@ -440,26 +440,31 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 若为传入 id ,则取路径 `//` 后面的字符拼接为 id,不含.与参数
|
// 若未传入 id ,则取路径 `//` 后面的字符拼接为 id,不含.与参数
|
||||||
id = id || href.replace(/^(#|(http(s?)):\/\/|\/\/)|\.|\/|\?.+/g, '');
|
id = id || href.replace(/^(#|(http(s?)):\/\/|\/\/)|\.|\/|\?.+/g, '');
|
||||||
id = 'layuicss-'+ id;
|
id = 'layuicss-'+ id;
|
||||||
|
|
||||||
link.href = href + (config.debug ? '?v='+new Date().getTime() : '');
|
var link = document.getElementById(id);
|
||||||
link.rel = 'stylesheet';
|
|
||||||
link.id = id;
|
|
||||||
|
|
||||||
// 插入节点
|
// 初始创建节点
|
||||||
if (!document.getElementById(id)) {
|
if (!link) {
|
||||||
|
link = document.createElement('link');
|
||||||
|
link.href = href + (config.debug ? '?v='+new Date().getTime() : '');
|
||||||
|
link.rel = 'stylesheet';
|
||||||
|
link.id = id;
|
||||||
head.appendChild(link);
|
head.appendChild(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否执行回调
|
// 若加载已完成,则直接执行回调函数
|
||||||
if (typeof callback !== 'function') {
|
if (link.__lay_readyState__ === 'complete') {
|
||||||
|
hasCallback && callback(link);
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 初始加载
|
||||||
onNodeLoad(link, function() {
|
onNodeLoad(link, function() {
|
||||||
callback(link);
|
link.__lay_readyState__ = 'complete';
|
||||||
|
hasCallback && callback(link);
|
||||||
}, function() {
|
}, function() {
|
||||||
error(href + ' load error', 'error');
|
error(href + ' load error', 'error');
|
||||||
head.removeChild(link); // 移除节点
|
head.removeChild(link); // 移除节点
|
||||||
|
|
Loading…
Reference in New Issue