问题描述
我正在制作一个JS函数,它会改变文档的图标。现在,我知道这听起来很简单,但事实并非如此。我正在尝试制作一个库,所以我需要一个可以将默认图标更改为所需图标的功能,反之亦然。如果我尝试将默认图标更改为所需图标,它可以正常工作,但是如果我尝试将图标更改为默认图标(带有灰色地球的那个),则它不起作用。
icon = function(dir){
if(typeof(dir)==="string"){
var elem = doc.createElement('link');
elem.rel = "icon";
elem.href = dir;
doc.head.append(elem);
}else if(typeof(dir)==="boolean"&&dir===false){
var toBeDel = [];
var currElems = document.querySelectorAll('link');
var i = 0; var f = 0;
while(currElems.length>=0){
if(currElems[i].rel=="icon"){
toBeDel.push(currElems[i]);
currElems.length--;
i++;
}
}
while(toBeDel.length>=0){
doc.head.removeChild(toBeDel[f]);
toBeDel.length--;
f++;
}
var elem = doc.createElement('link');
elem.rel = "icon";
elem.href = "/default/noimage.png";
doc.head.append(elem);
window.setTimeout(function(){
console.clear();
var len = efun.logs.length;
var sen;
var i = 0;
while(len>=0){
sen = efun.logs[i];
efun.gh = sen[0];
console.defaultLog(sen[0]);
len--;
i++;
}
},10);
}
else{
efun.cons("Error in icon() function,the parameter you have entered is not a string directory.");
}
}
注意:efun
对象是主库对象,efun.cons()
是console.log()
的快捷方式,efun.logs
是包含所有console.logs()
完成的数组。请注意,我调用了 console.clear()
函数来消除当我尝试设置默认图标时出现的错误,因为它不存在。 console.deafultLog()
是一个函数,它 console.logs()
没有被推入 efun.logs
数组。但错误是我想从 head 标记中删除所有 <link rel="icon" href="<!---directory here-->"
元素。可以有很多带有图标的元素,所以我想删除所有这些元素。为此,我在数组中使用了 document.querySelectorAll()
,并进行了几次 while 循环。但是,即使一个新的链接元素被附加到 <head>
标签中,我想删除的前一个元素仍然存在,所以我如何删除所有带有 <link>
标签和 {{1} 的标签} 属性。有没有办法解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)