我正在做一个bookmarklet(目前只是javascript代码),它会提示用户,要求一个域名,无论他们输入的域名是什么,都会改变当前网站的图标,他们就在他们输入的域名之一。我已经得到的代码工作没有错误,但图标不改变。
代码不会出错,它只是打印"Favicon changed"在控制台中,但没有任何变化。
下面是我的代码:var script = document.createElement('script');
script.src = '//code.jquery.com/jquery-3.4.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
var waitForJQuery = setInterval(function () {
if (typeof $ != 'undefined') {
function changeFavicon(src) {
$('link[rel="shortcut icon"]').attr('href', src);
}
let url;
url = prompt("Please enter the URL you wish to mask this page as. Example: www.google.com", "www.google.com");
changeFavicon("//www.google.com/s2/favicons?domain=" + url);
console.log("Favicon Changed!");
clearInterval(waitForJQuery);
}
}, 10);
编辑:我想让大家知道我对javascript非常缺乏经验,我最初来自Python,所以我知道一点,但很多这些代码可能效率低下或有缺陷。如果是这样的话,请随意评论或给我留言!谢谢你:D
编辑2:我尝试了一些其他的代码,这次去掉了jquery。function changeFavicon(src) {
var link = document.createElement('link'),
oldLink = document.getElementById('dynamic-favicon');
link.id = 'dynamic-favicon';
link.rel = 'shortcut icon';
link.href = src;
if (oldLink) {
document.head.removeChild(oldLink);
}
document.head.appendChild(link);
}
let url;
url = prompt("Please enter the URL you wish to mask this page as. Example: google.com", "google.com");
iconURL = "//www.google.com/s2/favicons?domain=" + url
changeFavicon(iconURL);
它仍然不能工作。
考虑以下内容:
$(function() {
function getIcon(url) {
var myData = [
"//www.google.com/s2/favicons?domain=" + url
]
if (url) {
$.get(myData[0], function(results) {
console.log(results);
myData.push(results);
});
}
return myData;
}
$("#get-btn").click(function() {
var newIcon = getIcon($("#url").val());
$("<div>").appendTo($(".prompt"));
$("<img>", {
class: "shortcut icon",
src: newIcon[0]
}).appendTo($(".prompt > div"));
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="prompt">
<p>Please enter the URL you wish to mask this page as.</p>
<input type="text" id="url" placeholder="www.google.com">
<button id="get-btn">Get FavIcon</button>
</div>
我找到了错误的东西!
www.google.com/s2/favicons?domain=
不返回ico文件,因此无法工作。