0

外部ページでスクリプトを実行する必要があります。

Dropbox API を使用しようとしています (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

ドロップボックス 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!!");    
        });
    });

しかし、エラーは上記と同じでした

4

1 に答える 1

0

ウィンドウを開くタブにスクリプトを挿入したいのか、それとも今開いたばかりの新しいタブにスクリプトを挿入したいのかわかりません。いずれにせよ、私は以下の両方の質問に答えるように努力しました. まず、スクリプトをウィンドウ オブジェクトにロードしないように注意してください。ウィンドウには複数のタブを含めることができ、各タブには独自のスクリプト環境があります。新しく開いたウィンドウのタブにスクリプトを挿入します。

結果 1:開いたばかりのタブにスクリプトを挿入する

以下のコードは、タブのwin.tabs配列を提供するため、ウィンドウのすべてのタブにスクリプトをロードする必要があります。新しく開いたウィンドウの場合、通常、タブは 1 つだけです。

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スクリプト ファイルを使用せずにオブジェクトを使用してコードを渡したことに注意してください。

于 2013-01-22T19:43:27.127 に答える