chrome扩展名-chrome.tabs.create

时间:2018-10-28 18:38:10

标签: javascript google-chrome google-chrome-extension

我正在创建一个新标签,然后并在其中直接注入一些代码。 但是问题是,在tabs.create中使用属性active:true(我需要使用)时,要注入的代码未正确注入。

这是popup.js中的代码:

chrome.tabs.create({url: "http://localhost:3000/", index: newTabId, active: false}, (newTab) => {
 chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    // check status so that it sends only one message, and not one for each status change
    if(changeInfo.status === "loading") {
        if (tab.id === newTab.id) {
            chrome.tabs.sendMessage(newTab.id, {message: "watch_video", videoData: selectedVideoData},
                function (resp) {
                    console.log("Resp",resp);
                    return true;
                }
            );
        } 
    }
 }); 
})

这是有问题的行:chrome.tabs.create({url: "http://localhost:3000/", index: newTabId, active: false}当active为false 时,将插入代码,但为true 时,似乎什么也没有发生。

inject.js:

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.message === "watch_video") {
        console.log("inject soon")
        injectScript(request.videoData);
        sendResponse("watch_video script is to be injected in " + window.location.href)
    }
});

function injectScript(videoData) {
        console.log("injected")
        $(document).ready(function() {
            document.test = "ABCDE"
            const checkState = setInterval(() => {
                $(".bkg").css({ "background-color": "#ffffff"})
            }, 100)
        })
}

我在这里用setInterval()尝试了一些操作,但是在 active为true的情况下不起作用。 但是,它与timeout一起使用。但是没有任何超时或间隔都无法工作 当active设置为true时

我可以只使用timeout,但它并不是很干净,我更想了解它的行为为何如此。我正在使用react btw。

关于活动属性的内容是这样的:

  

选项卡是否应成为窗口中的活动选项卡。不影响窗口是否聚焦(请参阅windows.update)。默认为true。
  来源:https://developer.chrome.com/extensions/tabs#method-create

0 个答案:

没有答案