
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
angular-chrome-messaging
Advanced tools
AngularJS interface for chrome.runtime messaging. Allows for remote procedure calls and data binding.
AngularJS interface for chrome.runtime messaging. Allows for remote procedure calls and data binding.
NOTE: With Facebook's introduction of the Flux Architecture, the two-way data binding provided by this module has become poor practice, so I wouldn't recommend it for most situations.
Google Chrome Extensions usually consist of:
angular-chrome-messaging allows:
In the background script, publish the variable to be bound:
// background.js
/**
* A service to hold global state and methods for the extension
*
* @param ChromeBindings
* @constructor
*/
function BackgroundService(ChromeBindings) {
this.user = {};
// Publish the `user` object so it can be read & modified by other scripts
ChromeBindings.publishVariable(this, 'user');
}
angular
.module('ChromeMessagingExample')
.service('BackgroundService', BackgroundService);
In another script (options/popup/contentscript), bind to the variable:
// options.js
function OptionsCtrl(ChromeBindings, ChromeMessaging) {
// Bind `ChromeMessagingExample.user` to `OptionsCtrl.user`
this.user = {};
ChromeBindings
.bindVariable('ChromeMessagingExample', 'user')
.to(this, 'user');
}
angular
.module('ChromeMessagingExampleOptions')
.controller('OptionsCtrl', OptionsCtrl);
Publish methods using angular.Module.run
:
// background.js
angular.module('ChromeMessagingExample')
.run(function (ChromeMessaging, BackgroundService) {
/* Publish `BackgroundService.login` so it can be called from other scripts:
* ChromeMessaging.callMethod(
* 'ChromeMessagingExample',
* 'login',
* {email: 'test@example.com', name: 'Alice'}
* ).then(function (user) {
* console.log(user);
* });
*/
ChromeMessaging.publish(
'login',
BackgroundService.login
);
ChromeMessaging.publish(
'logout',
BackgroundService.logout
);
});
Call them in from other scripts:
// options.js
function OptionsCtrl(ChromeBindings, ChromeMessaging) {
var vm = this;
vm.inputEmail = '';
vm.inputName = '';
vm.login = function () {
ChromeMessaging.callMethod('ChromeMessagingExample', 'login', {
email: vm.inputEmail,
name: vm.inputName
}).then(function (user) {
console.log('Logged in as:', user);
});
};
}
angular
.module('ChromeMessagingExampleOptions')
.controller('OptionsCtrl', OptionsCtrl);
To run the example:
Clone this repository.
Build the example:
cd example
npm install
gulp build
In Chrome, load example/build/
as an unpacked extension.
FAQs
AngularJS interface for chrome.runtime messaging. Allows for remote procedure calls and data binding.
The npm package angular-chrome-messaging receives a total of 2 weekly downloads. As such, angular-chrome-messaging popularity was classified as not popular.
We found that angular-chrome-messaging demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.