首页 > 解决方案 > Page.addScriptTag() 不适用于路径或内容

问题描述

我一直在尝试使用 puppeteer 在 javascript 中注入一个共享的网络工作者,以便消除继续进出文档(避免频繁序列化)范围的需要。但是 Page.addScriptTag() 似乎不起作用。到目前为止,我已经尝试了以下以及更多

const shared_worker_path = path.join(__dirname, "js_shared_worker.js");
    await browser.on("targetchanged", async target => {
        let p = await target.page();
        //Tried to wait for body. doesn't help.
        await p.waitForSelector("body");
        //Tried waiting for navigation too does't help
        page.on('console', (msg) => console.log(msg.type().toUpperCase() + ":", msg.text()));
        await p.evaluate(async () => {
            //
            alert("I don't understand why!");
        });        let eh = await p.addScriptTag({
            //this doesn't work
            path:shared_worker_path,
            //This doesn't work too
            //content: (async () => {
            //  alert("Just discovered a new deadend. wanna test?");
            //})()
        });
        //works
        console.log(p.url());
        //Prints: Promise{ <pending> }
        console.log(eh.jsonValue());

    });

如果我试图实现的目标(由代码暗示)是不可行的,那么如果知道的话,我将不胜感激。我也知道几乎相似的现有问题,它们解决的问题与我想要解决的问题不同。如果您尝试了代码,请对警报感到抱歉。
js_shared_worker.js

alert( document.querySelector("script[src*=js_shared_worker.js]").getAttribute("src") );

我提前感谢您的帮助。

标签: javascriptnode.jspuppeteerweb-workerheadless

解决方案


推荐阅读