【发布时间】:2012-02-07 20:13:17
【问题描述】:
我需要在外部页面上运行脚本。
我正在尝试使用 Dropbox API(仅限 JavaScript 和 HTML)。 我正在使用 JsOAuth 来处理 OAuth。
代码
这个应用是一对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 = 请求令牌 url
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!!");
});
});
但是错误和上面一样
【问题讨论】:
-
如果您尝试在 executeScript 方法调用中将
win.id替换为null会发生什么情况?chrome.tabs.executeScript需要一个选项卡 ID(可能与窗口 ID 不同?),如果使用null,它只会在当前选定的选项卡中执行。 -
但我的目标不是在当前选项卡中运行,而是在打开此窗口的选项卡上运行。但是因为我发现了错误:我必须将 id 传递给 Tab id 而不是窗口 id:
chrome.tabs.executeScript(win.tab[0].windowId .... -
你检查过脚本的权限吗?
标签: javascript oauth google-chrome-extension dropbox-api