Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Chrome extension to bookmarklet

There are gazillions of tutorials on how to convert a bookmarklet (or any javascript) to a Chrome extension, but I need the vise versa procedure. I have some extensions, which I would like to have as bookmarklets. The idea behind this: I don't want these extensions as they constantly eat away my RAM. Instead, I want simply press a button and run a bookmarklet, if I need it.

An example is this extension, which simply toggles javascript on/off in the browser. This extension contains only one javascript file (not including icons, manifest.json, and signature file _metadata/verified_contents.json).

I tried to use this javascript as a bookmarklet, but doing so doesn't conduce me to success - javascript wasn't toggled. It seems, that I'm missing something substantial, but I don't know what. Could somebody point me to the right procedure of conversion Chrome extensions to bookmarklets?

like image 224
Evgeniy Avatar asked Jul 28 '16 13:07

Evgeniy


People also ask

Do bookmarklets still work?

The bookmarklet concept appeared in Netscape's JavaScript guide in 1998, explaining how to use JavaScript code snippets to do things that the browser did not offer from the different menus. In 2021, current browsers and extensions already implement most of those functions, but they are still helpful.

How do I use bookmarklet extensions?

Just click the bookmarklet and your browser will run it on the current page. If you don't have a bookmarks toolbar — such as on Safari on an iPad or another mobile browser — just open your browser's bookmarks pane and tap or click the bookmark.

What is browser bookmarklet?

A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands that add new features to the browser. They are stored as the URL of a bookmark in a web browser or as a hyperlink on a web page.


1 Answers

Conversion to a bookmarklet is impossible for extensions that use privileged chrome API available only for Chrome apps and extensions, in this case chrome.contentSettings.javascript.set.


The root cause - memory hogging by an extension - can be resolved by switching from a persistent background page to an event page that is unloaded when an extension is not used.

You may nag the author of that extension to do so.
Unfortunately, most of the extension authors appear to be unaware.

Another possibility is to edit the extension's manifest.json manually by adding "persistent": false as shown in the event page docs (don't forget the comma), then load it locally. Some extensions will fail since switching to an event page may require reworking of code.

like image 118
wOxxOm Avatar answered Sep 20 '22 12:09

wOxxOm