Firefox extension: Embed javascript in a webpage - firefox-addon

I want to insert some script into every page, which have some functions that will be called by the modified HTML of that page, using a Firefox extension. I am able to insert the JavaScript into the head of the HTML, and also modify the page, but the java script functions are not called by the onmouseover event.
Does someone has any pointer on how to do that, using java script in local extension or as a online resource.
No GreaseMonkey, I need to do it with my plugin and not ask user to install greasemonkey, my plugin and the scripts.

Greasemonkey does this. It's excellent!

Make a Greasemonkey script. See Userscripts.org for lots of example ones to work off.

Why not use Greasemonkey? It allows you to execute javascript on any page on Firefox, and if executing the code you enter isn't good enough you could dynamically add links to the head, too.

you can modify the DOM using Firebug. I am not sure if you can load files locally.. sounds malicious. Also, you can just run arbitrary javascript commands in the Firebug console (a la python/ruby console)

There are some Greasemonkey-to-extension "compilers" (or extension-wrappers) out there:
Arantius's GM compiler
Gina Trapani's multiple-GM-script compiler
I've used the first one with extensive internal tweaking over time. However, I don't believe the compiler is actively maintained (default max-version is only 3.0), so may not be up-to-date with the latest GreaseMonkey, or FireFox.
I think Gina Trapani's is more designed for multiple scripts targetting the same domain, but I haven't used it.
Neither of these is a "GreaseMonkey solution" per se, as the end-user never has to install GreaseMonkey. They get a real-live FireFox extension. The core is very similar to GM, but you can change or add as much as you like.

Related

What are the implications of turning on the plugins attribute of an Electron webview?

Can somebody explain what the plugins attribute of the Webview tag actually does? What plugins does it allow? Only those that I, the developer, add?
<webview src="example.com" plugins></webview>
The docs just say:
When this attribute is present the guest page in webview will be able to use browser plugins.
My Electron app needs to show PDFs, which I can only do by setting this attribute, but I want to make sure that there aren't other adverse effects/implications of turning this on.
I don't want some random plugins to be running that I don't have control of (my understanding is that extensions are installed by users, but plugins are "installed" by the Chrome team, and we can't control what runs [barring Flash and the PDF Viewer]).
Running navigator.plugins in the console window of my Electron app shows an array of one element with name Chromium PDF Viewer, which is reasurring, but is there a chance that another plugin will get in that array, or would I have to be the one who adds that plugin?
Update: As of Chrome 57 (Electron 2 uses Chrome 61), the only plugins that we can control are the PDF Viewer (which Electron apparently ships with) and Flash.
If we want to use the built-in PDF Viewer, we have no choice but to specify the plugins attribute and trust Chrome's other plugins.
To answer my question above:
Is there a chance that another plugin will get in that array, or would I have to be the one who adds that plugin?
It would appear that I would have to be the one that adds it, but again, that's not stopping other Chrome plugins from running.

Find features of a non Microsoft program

I'm not sure how to even ask this question, but let's say I have a program such as Google Chrome. How would I find out the "features" of it so I can use PowerShell to modify it.
For example, how would I have Chrome open a web page and click a button.
I know for IE, you can use $ie.document.getElementById("loginform").submit() to click a button.
Thank you,
Tony
You can't ever really get the same amount of control over non-Windows programs using Powershell.
In terms of Chrome, you could simply open the browser and go to a webpage with:
$Start-Process "chrome.exe" "www.google.com"
There is generally not that much more for further functionality, but with Chrome you may be able to do things like change settings and configuration. Check out the (large) JSON file Preferences and other config files, which you can find in Chrome's local appdata folder (Win+R, %localappdata%, Google/Chrome/User Data/Default). I'm not too sure but it may also be a bad idea to mess around with these files.
I also did a Google search and found this third party powershell tool for browsers, called Selenium. Here's the list of extensions.

Cordova white screen of death iOS - browserify, react, cordova

I have a strange situation with a project for iOS.
Its created using browserify and React for Cordova and aimed at iOS.
We have built the project for iOS using Cordova commands without any issues. It runs with no xcode errors or Javascript errors either however none of the JS ui appears on screen. We just get a blank white screen with the system bar at the top. See attached screen shot.
So far we have found out that if you add HTML to the index.html in WWW folder it prints that fine so I assume its the JS.
When we run in a browser it works as well as building for Android.
We have no problems with anything other than iOS (simulator and device build).
hopefully someone can help me out here because I'm stumped. Please let me know what files you need to look at and I'll make them available.
Thanks in advance.
IMAGES
The error screen: http://www.voidapplications.co.uk/errorScreen.png
What we expect to be shown: http://www.voidapplications.co.uk/whatWeExpect.png
If you are using internationalization component that's because you need to use the Intl polyfill:
Intl.js and FT Polyfill Service
Intl.js polyfill was recently added to the Polyfill service, which is developed and maintained by a community of contributors led by a team at the Financial Times. It is available thru cdn.polyfill.io domain, which routes traffic through Fastly, which makes it available with global high availability and superb performance no matter where your users are.
To use the Intl polyfill thru the Polyfill service just add one script tag in your page before you load or parse your own JavaScript:
<script src="https://cdn.polyfill.io/v1/polyfill.min.jsfeatures=Intl.~locale.en"></script>
When specifying the features to use thru the polyfill service, you have to specify what locale, or locales to load along with the Intl polyfill for the page to function, in the example above we are specifying Intl.~locale.en, which means only en, but you could do something like this:
<script src="https://cdn.polyfill.io/v1/polyfill.min.js?features=Intl.~locale.fr,Intl.~locale.pt"></script>
note: the example above will load the polyfill with two locale data set, fr and pt.
This is by far the best option to use the Intl polyfill since it will only load the polyfill code and the corresponding locale data when it is really needed (e.g.: safari will get the code and patch the runtime while chrome will get an empty script tag).
source & other ways to include Intl polyfill: https://github.com/andyearnshaw/Intl.js#getting-started
You can debug the UIWebView in the simulator with Safari http://moduscreate.com/enable-remote-web-inspector-in-ios-6/. You'll probably see a big error message in the console, if not you will have access to the debugger so you can step through and sort it out.
I have had this issue in the past, it turned out to be unsupported javascript features. for example, setting default parameters in the function. I.e:
function test( myvalue=0 ) { /* ... */ };
I had to initialise the value inside the function instead. You could also try removing any ecma script 2016 features you may have implemented.
Trouble shooting this type of issue was painful. I created a minimal version of the smallest part of my product compiled and ran it on ios emulator, added another chunk of the product, rinse and repeat.
Im sure there's a better way to detect these issues, but I do not know it.

Hp Loadrunner / virtual user generator web click and script alternative

Not sure if iam asking this in the right place, sorry if not!
We currently create scripts through HP Virtual User generator (using the web click and script protocol) to monitor our webapps, we use this as they require JavaScript execution when being monitored. We import these scripts into HP sitescope so we get alerted when they are down.
The issue is after upgrading to loadrunner 12.01 they have removed the web click and script protocol. I have ran the protocol advisor and it advised to use Truclient ajax - IE protocol. I recorded a script using this and it worked great but it looks like this is not supported in sitescope!
Is anyone aware of an alernative to Web click and script that is compatible with sitescope or an alternative to sitescope altogether?
Thanks!
Web virtual user. Recode the JavaScript function you need in C or take advantage of the functions available in LoadRunner to execute your JavaScript "as is"
If you're going to go with Web HTTP, as James suggests, here's the blog post that explains how to integrate JS bits into your script: http://h30499.www3.hp.com/t5/HP-LoadRunner-and-Performance/How-to-use-JavaScript-in-your-HP-LoadRunner-scripts/ba-p/6197321#.VEO-f8ksHRw
They have not removed the click and script protocol. What they've done is rename it to Ajax Click and Script
Ah yes you're right Ajax Click and Script is different from the normal click and script that is no longer available in LR12.
With the Ajax Click & Script have you tried changing the event configuration level? This might help.

Automatic Typing Textarea/input/form in JavaScript

I've been searching for a way to make a textarea type inside of itself. Unfortunately, even with some google searching, I still don't have a clue? Do you guys know where to start with this?
http://lmgtfy |dot| com is an example, but I'm not sure if they use some other technique...
The lmgtfy people are simply using javascript to change the value of the input. Here is a simple jsfiddle showing the same thing:
http://jsfiddle.net/Caut6/1/
LMGTFY uses javascript. If you visit the site using chrome or some other browser with a debugger, you should be able to pause javascript execution and check out how they do it, then roll or copy your own version.
In Chrome, the pause button is under the Scripts area. Their bundle.js files appears to host the JS you are looking for, it is around 1000 lines of code, but you should be able to see the few functions you need to borrow their implementation.
Hope this helps.

Resources