Difference Between Plugin, Addon, and Helper Application - browser

I am trying to understand classification/naming of scripts,
I havent found any software vocabulary online that I can read,
I have many scripts which my own, and from open sources.
I want to put my script to correct folders.
Whats difference between those concepts in practice?

Plugins are the complete programs and these can be installed in your system and can be used in browser whereas add-ons are not complete programs ,these are used to add functionality to your browser.
for example, Flash Player is a plugin which can be installed in your system as well in browser to play video,
InPrivate Filtering is an add-on which is used in some browser to provide privacy.
So, add-ons provide additional and limited functionality to your browser.

Related

PProPanel JSX - Basic guide to get started?

I know you can extend Adobe Premiere Pro with some simple JavaScript. The problem with that link (which I got to through the official Adobe website), is that all of sample code links are outdated (they point to the wrong location of the file, to lines that aren't correct anymore).
The second paragraph instructs you to install a bunch of things, none of which seem like things you "install", and they mention ExtendScript, which I don't understand whether is already installed with my Premiere or not (it's not available on Creative Cloud, and also the links I found on Adobe's website for it are, again, dead). I keep searching online and finding dead links to tutorials that no longer exist. Really, dead links everywhere.
I'm an experienced developer with good JS background, I just want know what I need, some simple examples of basic usage to get me started and maybe working links to some cheat-sheet I can use when I'm looking for available functions.
Extendscript is the name of the old API for automating Premiere and other Adobe apps. It's built-in and can basically do anything that you can do with the GUI, and it's javascript-based.
There is an IDE for Extendscript, the Extendscript Toolkit (ESTK) which has a debugger and allows you to inspect data etc. It's perplexingly hard to find on the Adobe website; I found it by a duckduckgo search here, I installed it through the creative cloud desktop manager, though I'm not sure how you do that with the current version.
As far as documentation goes, you're right, it's dead link city. There is a Javascript Tools Guide included with the Extendscript Toolkit, on windows it's in C:\Program Files (x86)\Adobe\Adobe ExtendScript Toolkit CC\SDK\. That covers creating UI elements, but doesn't explain Premiere's object model. AFAIK there is no official documentation for this, you have to use the ESTK data browser to look for yourself.
The CEP extensions are a new development and allow for easier integration with the host. I think you already have all the documentation there is for it. I'd advise that you pester Adobe to make it easier for developers like yourself to create tools for their users.
Here is for anyone else who gets here from a Google search: You can also go to this link to download the ESTK: https://helpx.adobe.com/download-install/kb/creative-cloud-apps-download.html

Browser Extension the "Injected way" a cross-browser extension that include a JS from a distant server

I've found this nice article about the "injected Way", but the author never finished it :
http://hightechstartups.blogspot.ch/2012/05/different-way-of-developing-browser.html
I would like a bare bone cross browser extension, without any 3rd party extensions or framework (to be as light as possible and not dependant on a 3rd party) that would load Jquery and a JS from a distant server and the ability to load it before or after the page is fully loaded.
I've read a lot of topics about the subject, but since IE10, Chrome 26 and FF20 are out with their new cross-link limitations, i was wondering if somebody had ressources, source code or tutorial about the following requirements :
I need :
Cross browser extension supporting (IE 8+ or 9+ worse case, Chrome
26+, FF20+, Safari)
Ability to inject a single JS hosted on another server. Inserts a script tag that references a javascript file in the head of the HTML
page and then be executed
Not be dependant on a third party extension (greasmonkey) or framework (Kango, Crossrider)
Ability to load before or after the page is fully loaded
This method allows me to customise the browser extension depending on the user's location and it also avoid having updates as the JS is updated on each page refresh.
I'm aware of the downsides, but i would like to achieve this.
I'm aware of cross browser framework like Kango or crossrider, but both don't fit me needs.
The closest example i could find is this How can I run a <script> tag that I just inserted dynamically from a BHO
but it only covers IE and as i got very little Csharp experience, i would like to see a full example to understand it properly and learn from example.
I would LOVE to have a few examples, even if it's not cross-browser (IE being the worst part for me).
Thanks a lot for your support !
Update1:
About Kango and Crossrider, Kango is 2000$ if you want to use IE and for Crossrider you're required to be distributed and monetized by them.
I've managed to code for IE and Chrome, but i was looking for an "elegant" way and figured it was the best place to ask given the level of knowledge of people on this site.
For the installer i currently use NSIS, but i'll test Wix too.
Finally i guess the only way for me would be to learn C++ and .net to get it to work with IE, but if anyone could provide more source code it would be great to test speed and compatibility and discuss here what's the best solution.
Why do Kango or Crossrider not fit your needs? Both frameworks allow you to manipulate the page's DOM (which is what you want):
Kango: Adding content script
Crossrider: documentation, example code
If you want to code your own solution, take a look at the relevant documentation:
Content scripts (Chrome)
The Page mod Jetpack API (Firefox)
Injected scrips (Safari)
Injected scripts (Opera)
Internet Explorer does not natively support extensions. It took me about 80 hours to create a stable and reliable IE extension which supports cross-site AJAX, a (preference) storage method and injection of scripts as early as possible in any frames based on its URL. I developed and tested the extension with Visual Express 2010 on Windows XP and Windows 7, for IE 8-10 (the extension might work on IE6/7, but I decided to not support these ancient and rarely used browsers).
First, I wrote an extension in C# based on LiveReloadIEExtension (a sample IE extension, which in turn is based on this Stack Overflow answer - see also this blog post). It was functional, but it required .NET 4, lacked support of frames, and it's relatively slow.
So, I decided to write an IE extension from scratch in C++. A good starting point is available at http://www.wischik.com/lu/programmer/bho.html: Sample code for C++ BHO, which changes the document's background based on key/mouse events. I've also learned a lot by looking at other code samples on CodeProject, topics on the MSDN forums, questions and answers on Stack Overflow, lots of other blogs, and the MSDN documentation:
DWebBrowserEvents2 interface lists several events which you use to find an appropriate injection point.
Scripting Object Interfaces (MSHTML) lists even more interfaces. You'll be mainly interested in the iHTMLDocument, iHTMLDocument2, ... interfaces.
After creating the IE extension, you want to deploy it of course. I used Wix toolset to create a MSI.

Are NPAPI plugin security issues same as a downloadable app that connects to the internet

I want to build a cross-platform helper app that lets my users scan the desktop filesystem and find/upload the original, hi-res version of a JPG image they have previously uploaded. The scan may try to match by filename, EXIF data, or by comparing visual attributes using computer vision algorithms.
I read the following and get a little frightened:
Security considerations
Including an NPAPI plugin in your extension is dangerous because plugins have unrestricted access to the local machine. If your plugin contains a vulnerability, an attacker might be able to exploit that vulnerability to install malicious software on the user's machine. Instead, avoid including an NPAPI plugin whenever possible.
My other option is to build a download/install native desktop app that runs in the background. But this approach is would also have unrestricted access to the local machine + my servers via the internet.
Both approaches require the user to download/install native code - but the NPAPI plugin has the promise of easier access and a common framework. So are the security issues the same or is one approach generally preferred over another?
Essentially, both plugins and a regular app have the same kind of access - so installing either one requires quite a bit of trust. There is a difference in attack surface however: while an application is normally something that can only be started by the user, a plugin is accessible to every website (restricting access to selected websites is possible but this protection itself can fail). Also, if you want to package an NPAPI plugin in a Chrome extension you have to consider that Chrome Web Store requires manual review before accepting such extensions (and distributing extensions from your own site is pretty hopeless with the changes made in Chrome 21). But it can potentially provide a better user experience. All in all: not an easy choice to make.

what language should be used to make a website which will combine or work with the browser?

what language should be used to make a website or a webpage which will combine with the browser or the add-ons installed in the browser or the website can even takeover control of the browser ? Is there any language ?
I do not see the language as a factor in your question. Browsers use well-defined interfaces. Software that interacts with a browser can be written in any language as long as it supports those interfaces.
Beyond that, you would need to better define what is meant by "combine with the browser". Having websites "takeover control" of the browser is a dangerous thing and, in general terms, is not allowed.
However, there are plug ins that can be downloaded and installed and will work with the browser. Again, you need to be much more specific about the task you are talking about.
Without more information its tough to answer this.
For code that runs on the browser look at javascript or better yet JQuery which allows a lot more functionality and handles a lot of the cross browser problems for you.
If you're looking to get further integration going then you're going to have to take a different route for each browser. Firefox allows you to develop add-ons to add functionality to the browser, as does chrome. For IE you'll have to look at ActiveX
However for anything more than simple javascript you're going to have to get your users to allow your site to install whatever addons you use. Most users, myself included, wouldn't allow your site to install additional content on their browsers unless they really trusted the site and there was a strong functional incentive to use the code.

How to build an shipable, "local", branded mini-browser

Since I don't really have a good idea for word to search with myself I’d like to ask you:
Is there some project, technology, w/e that enables you to build a 'browser' with a very slim ui. Just some CI and a customised "starting page".
I'm thinking of something like the Webkit engine (and interface) Valve/Steam uses for it's clients store page.
In what direction should I search for something like that ? How would one start implement something like that ?
Answers to questions:
We need this to provide something like a "Kiosk" application (for touchscreens) and shippable to our Customers. Running a browser in "full screen" is a temporary solution.
As of Platforms: Windows is absolutely sufficient for now, but Mac/Linux wouldn't hurt.
Prism looks nice so far but lacks the "shippable" part, e.g. I see no way of packaging it.
Take a look at Mozilla Prism. It's a "UI-Less" version of the Mozilla/Gecko rendering engine aimed at deploying web apps on the Desktop. It's also multi-platform. It might be fairly close to what you need, with comparably little work.
WebKit has bindings for many languages, is cross-platform, and is full-featured as a HTML engine. A bit of work capturing signals and calling functions will make it into any kind of web browser you like.
You could use Adobe Air, follow this tutorial and include your website within an iframe. That would allow you to build an executable you can ship to your customer.
Various graphics toolkit libraries contain some components which can display a limited amount of HTML. I've seen this in qt (a C++ GUI library) and in Java Swing, and have indeed built a tiny "browser" in Java within a couple of hours. Java Swing lets you attach a link listener so links can be made clickable and thereby jump to different URLs. Thus, my application could be made to work as a very limited browser.
This approach lets you display text, images and links; in the case of Java, there's even fairly good support for CSS styling. However, there's no simple way to make buttons and form fields work, and of course no support for manipulating the DOM or anything else done in JavaScript.

Resources