chrome.tabs.executeScript上的未知错误

时间:2012-01-11 13:11:18

标签: javascript oauth google-chrome-extension dropbox-api

我需要在外部页面上运行脚本。

我正在尝试使用Dropbox API(仅限JavaScript和HTML)。 我正在使用JsOAuth来处理OAuth。

代码

此应用程序是一对Google Chrome的Packaged Apps类型。

授权

//Request token
chrome.windows.create({url: url, type:"popup"}, function(win){
        chrome.tabs.executeScript(win.id, { file: "contentScript.js" }, function(){
            console.log("Callback executeScript!!");    
        });
    });

url = 请求令牌网址

Dropbox OAuth

contentScript.js

$(document).ready(function() {
    console.log("Script injected!!!");
})

控制台错误

  

tabs.executeScript期间出错:未知错误。   chromeHidden.handleResponseextensions / schema_g​​enerated_bindings.js:94   openAuthoriseWindowscripts.js:297   g.fetchRequestTokenjsOAuth-1.3.3.min.js:1   g.init.request.q.onreadystatechange

尝试

由于外部页面不能jQuery,所以努力删除对jQuery的引用

contentScript.js

console.log("Script injected!!!");

控制台错误

Error during tabs.executeScript: Unknown error.
chromeHidden.handleResponse

另一种尝试是通过代码注入脚本:

//Request token
chrome.windows.create({url: url, type:"popup"}, function(win){
        chrome.tabs.executeScript(win.id, { code: "console.log('Script injected!!')" }, function(){
            console.log("Callback executeScript!!");    
        });
    });

但错误与上述错误相同

1 个答案:

答案 0 :(得分:0)

我不确定您是否要将脚本插入打开窗口的选项卡或刚打开的新选项卡。无论如何,我努力回答以下两个问题。首先,请注意,您不应尝试将脚本加载到窗口对象中。该窗口可以包含多个选项卡,每个选项卡都有自己的脚本环境。将脚本注入新打开的窗口的选项卡中。

结果1:将脚本注入刚刚打开的标签

下面的代码应该将脚本加载到窗口的所有选项卡中,因为win.tabs提供了一组选项卡。对于新打开的窗口,通常只有一个选项卡。

chrome.windows.create({url: "https://google.com", type:"popup"}, function(win){
    chrome.tabs.executeScript(win.id.tabs, 
                              { code: "console.log('new tab context');" });
});

结果2:将脚本注入打开窗口的标签

记录打开新窗口的选项卡的ID,然后在回调中注入脚本

var openingTabId = ASSIGN_THE_TAB_ID;
chrome.windows.create({url: "https://google.com", type:"popup"}, function(win){
    chrome.tabs.executeScript(openingTabId, 
                              { code: "console.log('opening tab context');" });
});

请注意,我使用code对象传递代码而不使用脚本文件。