Если текущая (не-голая) проверка начнет давать эту ошибку, проверьте файл .git / config; если core.bare
истинно, удалите эту конфигурационную строку
Кто-то очень любезно предоставил решение, которое дало именно то, что я пытался сделать.
const selector = "#panels img[src='https://hyperspace.marquiskurt.net/icons/favicon-32x32.png']";
function fixImages() {
const maybeBadImage = document.querySelector(selector);
if(maybeBadImage){
maybeBadImage.src = "chrome://favicon/https://hyperspace.marquiskurt.net/app/";
}
}
const observer = new MutationObserver(fixImages);
function initMod() {
if(!document.querySelector(selector)){
setTimeout(initMod, 0);
return;
}
observer.observe(document.querySelector(selector), { attributes: true });
fixImages();
}
initMod();
Если для setTimeout
задано значение 0, пунктирная src
немедленно исправляется без каких-либо визуальных изменений, которые может видеть пользователь. Этот сценарий может быть изменен для использования, если у кого-то еще возникает проблема, когда веб-браузер Vivaldi неправильно изменяет src
для значка определенной веб-панели, добавленной пользователем.
так как document.getElementsByTagName('img');
возвращает список элементов , а не узел, вы не можете использовать targetNode
(потому что это не узел)
Здесь я вместо этого используется document.querySelectorAll
, тот же результат, но у него есть метод forEach, который я использую для создания наблюдателей мутаций для каждого IMG
function initMod() {
if(!document.querySelector("#browser")){
setTimeout(initMod, 1000);
return;
}
const callback = (mutationsList, observer) => {
for(let mutation of mutationsList) {
if (mutation.type == 'attributes') {
console.log('The ' + mutation.attributeName + ' attribute was modified.');
const n = getElementsBySrc('https://hyperspace.marquiskurt.net/icons/favicon-32x32.png');
for (let e of n) {
e.setAttribute('src', 'chrome://favicon/https://hyperspace.marquiskurt.net/app/');
}
}
}
};
const config = { attributes: true, childList: false, subtree: false, characterData: false };
document.querySelectorAll('img').forEach(targetNode => {
const observer = new MutationObserver(callback);
observer.observe(targetNode, config);
});
}