Skip to content

Instantly share code, notes, and snippets.

var btn = document.getElementById("copy-button");
btn.addEventListener("click", clickHandler, false);
function clickHandler(e) {
document.exeCommand('copy');
}
@hallvors
hallvors / yui-lightbox.js
Created January 22, 2014 09:07
some of the code that runs the lightbox feature on flickr.com
function k(aC, aG, aJ) {
var aI, aD, aO, aM, aP, aF = true, aL, Y;
if (aC) {
aI = K(aC)
} else {
return
}
var aN = at().width;
if (aC.get("needs_interstitial")) {
aF = true
@hallvors
hallvors / marionette-spoof.py
Last active January 3, 2016 08:28
How to spoof user-agent in Firefox from a Python script using the Marionette API
from marionette import Marionette
def set_mozilla_pref(marionette_instance, name, value):
marionette_instance.set_context(marionette_instance.CONTEXT_CHROME)
js = """
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
str.data = "%s";
pref.setComplexValue("%s", Components.interfaces.nsISupportsString, str)
""" % (value, name)
@hallvors
hallvors / sumo-975037.htm
Created December 12, 2013 14:19
Test case for SUMO issue 975037
<!DOCTYPE html>
<html>
<head><title>document.write and the back button</title></head>
<body>
<p>FAILED (not ran)</p>
<iframe src="./"></iframe>
<script>
// there is something odd with document.write() and IFRAME
// one immediately, inline
writeIframe('1st time - inline');
@hallvors
hallvors / minicss.js
Created December 6, 2013 11:14
A method that tries to remove CSS rules that do not apply to anything in the current page, aids in minimising test cases
(function minimizeCSS(){
var s = document.styleSheets[0].cssRules;
var j=s.length-1, ar=[];
try{
for(;j>=0;j--){
if(document.querySelectorAll(s[j].selectorText).length>0)ar.push(s[j].cssText);
}
}catch(e){
console.log('error for style #'+j)
}
@hallvors
hallvors / dbg.js
Created December 4, 2013 23:05
Contents of dbg.js is always somewhat random, depends on whatever I needed to inject during the last session - but the noscriptDump() function is always there..
// post serialized no-script clone back to debugger
if(true){ // this is just to be able to toggle the dumping off easily
(function noscriptDump(){
var clone = document.documentElement.cloneNode(true);
var elms = clone.getElementsByTagName('script')
while(elms.length){
elms[elms.length-1].parentNode.removeChild(elms[elms.length-1]);
}
var html = clone.outerHTML;
var x = new XMLHttpRequest();
@hallvors
hallvors / videosites.txt
Created November 15, 2013 12:18
Semi-random list of sites from a "watch video online" Google search
http://www.in.com/videos/
http://www.veoh.com/
http://screen.yahoo.com/
http://blip.tv/
http://www.metacafe.com/
http://www.ovguide.com/
http://www.nick.com/videos/
http://www.bharatmovies.com/hindi/songs/bollywood-video-songs.htm
http://www.biography.com/videos
http://www.ndtv.com/video/
@hallvors
hallvors / fakenavigatorprops.js
Created October 6, 2013 17:12
Faking navigator properties for the JS environment (note: must be injected before page JS runs!)
(function(props){
for(var name in props)
navigator.__defineGetter__(name, (function(name){return function(){return props[name]}})(name));
})({
userAgent: 'Mozilla/5.0 (Mobile; rv:18.1) Gecko/18.1 Firefox/18.1',
appCodeName: 'Mozilla',
appName: 'Netscape',
appVersion: '5.0',
vendor:'',
vendorSub:''
@hallvors
hallvors / sanitize_dom.js
Last active December 24, 2015 20:18
This strips out HREF, VALUE and SRC attributes and comment nodes to be able to serialize the DOM and compare mostly the structure. This helps because HREF, VALUE and SRC tends to contain session identifiers with random data that give false positives when trying to diff the HTML code.
(function(){
function removeAttr(attr){
var xpElms = document.evaluate('//*[@'+attr+']', document.documentElement, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE , null );
var elm;
for(var i=0; elm = xpElms.snapshotItem(i); i++){
elm.removeAttribute(attr)
}
}
removeAttr('href');
removeAttr('src');
@hallvors
hallvors / 896014-paypal-test.php
Last active December 23, 2015 08:29
PHP script to test if PayPal does mobile browser sniffing correctly for Firefox OS
<?php
if(isset($_GET['pp_init'])){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api-3t.sandbox.paypal.com/nvp");
$post = "METHOD=SetExpressCheckout&VERSION=93&USER=sdk-three_api1.sdk.com&PWD=QFZCWN5HZM8VBG7Q&SIGNATURE=A-IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU&PAYMENTREQUEST_0_AMT=5.00&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_PAYMENTACTION=Sale&RETURNURL=http://www.example.org&CANCELURL=http://www.example.org";
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);