Неизвестная ошибка в chrome.tabs.executeScript - PullRequest
0 голосов
/ 11 января 2012

Мне нужно запустить скрипт на внешней странице.

Я пытаюсь использовать API Dropbox (только JavaScript и HTML). Я использую JsOAuth для работы с OAuth.

Код

Это приложение представляет собой пару типов Пакетные приложения для Google Chrome.

Авторизовать

//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 = URL-адрес запроса токена

Dropbox OAuth

contentScript.js

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

Ошибка в консоли

Ошибка во время tabs.executeScript: неизвестная ошибка. chromeHidden.handleResponseextensions / schema_generated_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 голосов
/ 22 января 2013

Я не уверен, хотите ли вы вставить скрипт во вкладку, открывающую окно, или в новую вкладку, которую вы только что открыли.В любом случае я постарался ответить на оба вопроса ниже.Во-первых, обратите внимание, что вы не должны пытаться загрузить скрипт в объект окна.Окно может содержать несколько вкладок, и каждая вкладка имеет свою собственную среду сценариев.Вставьте ваш скрипт во вкладку только что открытого окна.

Результат 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: Вставка скрипта во вкладку, открывающую окно

Запишите идентификаторна вкладке, открывающей новое окно, затем введите сценарий обратного вызова

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 для передачи кода без использования файла сценария.

...