I'm trying to write a Google Chrome extension.
The documentation and even sample code say that a background page can run JavaScript on the active tab using the chrome.tabs.executeScript method, but chrome.tabs is always undefined when I break in the debugger.
This behavior is manifest in both my code and the Google sample code.
The Real Question: How do I run JavaScript on the active tab from a background page in a Chrome extension?
background.js:
chrome.browserAction.onClicked.addListener(function(tab) { debugger; // chrome.tabs is undefined here chrome.tabs.executeScript({ code: "console.log('hi')" }); }); manifest.js:
{ "manifest_version": 2, "name": "Hello World", "description": "Says 'hello' to the world.", "version": "0.1", "permissions": ["tabs", "activeTab"], "browser_action": { "default_title": "hi" }, "background": { "scripts": ["background.js"] } } Things I've tried:
- Setting the
persistentflag onbackgroundin the manifest file tofalse,true,"false", and"true" - Including the
"tabs"permission
The runtime throws this error when I try access chrome.tabs:
Lazy require of tabs.binding did not set the binding field
debugger;statement. You don't need it so don't use it. Instead set a normal breakpoint.debugger;statement gets me past this issue on the sample code. I'm still having difficulty with my code, but I can figure that out. Thanks so much.