Я сделал этот код для тестирования и собирался связать с ним скрипт Github. Но когда я попробовал, это не сработало.
const request = url => fetch(url).then(res => res.text());
const injectInline = (data) => {
data = data.replace(new RegExp("\r?\n", "g"), "")
data = data.replace(/ +/g, " ");
let s = document.createElement('script');
s.type = 'text/javascript';
s.innerText = data;
document.getElementsByTagName('body')[0].appendChild(s);
};
(async function() {
let script = await request(`github link`);
injectInline((script));
})();
let observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (let node of mutation.addedNodes) {
if (node.tagName == 'SCRIPT' && node.src.includes("c14.js")) {
node.outerHTML = ``;
}
}
}
});
.observe(document, {
childList: true,
subtree: true
});
Когда я запускаю этот код, он выдает следующую ошибку:
Uncaught SyntaxError: Unexpected token '.'
«Не сработало» — это не техническое описание вашей проблемы. Что случилось? Вы видели какие-либо ошибки в вашей консоли JavaScript? Вы получили неожиданные результаты?
«Неожиданный токен» обычно означает, что то, что вы вводите, имеет синтаксическую ошибку. Вы получили необработанный JavaScript или что-то, обернутое в HTML?
Пожалуйста, следуйте этим рекомендациям, чтобы улучшить форматирование вопроса.
Должен ли .observe быть таким?
добро пожаловать в СО. На первый взгляд, в последних строках есть ;
, которого быть не должно. Вот ваш обновленный код:
const request = url => fetch(url).then(res => res.text());
const injectInline = (data) => {
data = data.replace(new RegExp("\r?\n", "g"), "")
data = data.replace(/ +/g, " ");
let s = document.createElement('script');
s.type = 'text/javascript';
s.innerText = data;
document.getElementsByTagName('body')[0].appendChild(s);
};
(async function() {
let script = await request(`github link`);
injectInline((script));
})();
let observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (let node of mutation.addedNodes) {
if (node.tagName == 'SCRIPT' && node.src.includes("c14.js")) {
node.outerHTML = ``;
}
}
}
})
.observe(document, {
childList: true,
subtree: true
});
В вашем коде есть лишняя точка с запятой; Вы должны сделать это:
const request = url => fetch(url).then(res => res.text());
const injectInline = (data) => {
data = data.replace(new RegExp("\r?\n", "g"), "")
data = data.replace(/ +/g, " ");
let s = document.createElement('script');
s.type = 'text/javascript';
s.innerText = data;
document.getElementsByTagName('body')[0].appendChild(s);
};
(async function() {
let script = await request(`github link`);
injectInline((script));
})();
let observer = new MutationObserver(mutations => {
for (const mutation of mutations) {
for (let node of mutation.addedNodes) {
if (node.tagName == 'SCRIPT' && node.src.includes("c14.js")) {
node.outerHTML = ``;
}
}
}
})
.observe(document, {
childList: true,
subtree: true
});
Номера строк здесь служат только для загромождения и не служат никакой полезной цели. Их лучше удалить. Просто добавьте комментарий к соответствующей строке.