首页 > 解决方案 > Javascript 意外令牌

问题描述

我为一些测试编写了这段代码,我打算将一个 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 '.'

标签: javascriptecmascript-6

解决方案


欢迎来到SO。乍一看,;最后几行中不应该出现在这里。这是您更新的代码:

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
});

推荐阅读