26 comments

[ 6.6 ms ] story [ 51.8 ms ] thread
Are there any tools for building cross-browser extensions? What would be really useful is a tool that can help you build a Chrome extension, Firefox extension, and Safari Extension.
(comment deleted)
Genuinely curious: when you want a "cross-browser extension", why wouldn't a web-app do? Isn't an extension specifically something that requires non-standard browser APIs and hence can't be made part of a website?
some extensions allow you to hook into browser chrome.

while the actual work of the extension may be done in a web app, extensions get more access to the interface of a browser than a normal web app

example: the Buffer extension could probably just be a button that simply loads a JS file from their servers that does all the real work. WIthout being an extension, you wouldn't have the convenience of having the button on every page you view.

Extensions can augment other websites' functionality, e.g. using "Missing E" for making Tumblr suck less.
I used this to start up an extension for use internally with my company for quickly adding discussions to a Basecamp project. Definitely takes care of a lot of the basics for you. Back when I used it, some pieces weren't maintained anymore, so look out for that. (Seems like the settings interface was from a non-active project?)

Great way to get started on an extension. Would love to see this go cross-browser.

Thank you very much for the kind words. I really don't think I can ever take this to the cross-browser level though. Like the other commenters mentioned, crossrider guys do a good job at it.
(comment deleted)
Cool! I made https://github.com/mahemoff/chrome-boilerplate a couple of years ago and haven't had time to keep it up to date with the latest APIs. This is comprehensive and a slick UI too. Congrats.
Thanx Michael, as you can see, you are mentioned in the footer, because I took some things from your project as well.
Looks great!

One comment though, I would try to avoid building a whole JSON structure in the URL of GET, as in:

    http://extensionizr.com/!#{"modules":["hidden-mode","with-bg",
    "with-persistent-bg","with-custom-options","no-override","inject-css",
    "inject-js","omnibox","jquerymin","angular"],"boolean_perms":
    ["bookmarks","chrome://favicon/","clipboardRead","clipboardWrite",
    "contentSettings","contextMenus","cookies","fileBrowserHandler",
    "tts","ttsEngine","history","idle","management","notifications",
    "tabs","geolocation"],"match_ptrns":[]}
Rather, let one setup choices, and save it to a hash, which can be bookmark-able and retrieved later.

Also, when sending in post body, converting it to Base64 before sending on the wire, e.g.:

    btoa(JSON.stringify($Object))
Thanx! Actually the long urls are indeed kinda suck, I think I'll just add a shortener. Having different setup choices can be problematic as there are a TON of settings to be customized