-
-
Save leobalter/998465 to your computer and use it in GitHub Desktop.
| /** | |
| * Annoying.js - How to be an asshole to your users | |
| * | |
| * DO NOT EVER, EVER USE THIS. | |
| * | |
| * Copyright (c) 2011 Kilian Valkhof (kilianvalkhof.com) | |
| * Visit https://gist.github.com/767982 for more information and changelogs. | |
| * Visit http://kilianvalkhof.com/2011/javascript/annoying-js-how-to-be-an-asshole/ for the introduction and weblog | |
| * Check out https://gist.github.com/942745 if you want to annoy developer instead of visitors | |
| * | |
| * Licensed under the MIT license. http://www.opensource.org/licenses/mit-license.php | |
| * | |
| */ | |
| /*jshint forin: false, immed: true, curly: true, eqeqeq: true, bitwise: true, noempty: true */ | |
| (function(a) { | |
| /** | |
| * Resize the window to fullscreen (1024x768 always) | |
| */ | |
| a.fullScreen = function () { | |
| window.resizeTo(1024,768); | |
| }; | |
| /** | |
| * Always keep the browser full screen | |
| */ | |
| a.keepFullScreen = function () { | |
| window.onresize = function() { | |
| window.resizeTo(1024, 768); | |
| }; | |
| }; | |
| /** | |
| * Disable right click so users can not copy! | |
| */ | |
| a.noRightClick = function () { | |
| document.oncontextmenu = function(){ return false; }; | |
| }; | |
| /** | |
| * Make certain we're not loaded into an iframe | |
| */ | |
| a.onTop = function () { | |
| if (parent.frames.length > 0) { top.location.replace(document.location); } | |
| }; | |
| /** | |
| * Disable users dragging photos or text to they can't copy them | |
| */ | |
| a.noDrag = function () { | |
| document.ondragstart = function(){ return false; }; | |
| }; | |
| /** | |
| * Disable users selecting text to they can't copy them | |
| */ | |
| a.noSelect = function () { | |
| //no text selection, in IE | |
| document.onselectstart = function () { | |
| if (event.srcElement.type !== "text" && event.srcElement.type !== "textarea" && event.srcElement.type !== "password") { | |
| return false; | |
| } else { | |
| return true; | |
| } | |
| }; | |
| //no text selection, in Firefox | |
| document.onmousedown=function(e){ | |
| var obj=e.target; | |
| if (obj.tagName.toUpperCase() === "INPUT" || obj.tagName.toUpperCase() === "TEXTAREA" || obj.tagName.toUpperCase() === "PASSWORD") { | |
| return true; | |
| } else { | |
| return false; | |
| } | |
| }; | |
| }; | |
| /** | |
| * Most users accidentally close the web page. Remind them of this. | |
| * @param {string} msg optional message. If empty, "Please come back!!1" is displayed. | |
| */ | |
| a.dontLeave = function (msg) { | |
| var message = msg || "Please come back!!1"; | |
| window.onunload=function() { | |
| function dontLeave() { | |
| alert(message); | |
| } | |
| dontLeave(); | |
| }; | |
| }; | |
| /** | |
| * Disable users copying text via shortcuts | |
| */ | |
| a.noCopy = function () { | |
| window.onkeydown = function(e) { | |
| if ( e.ctrlKey ) { | |
| return false; | |
| } | |
| }; | |
| }; | |
| /** | |
| * Refresh the page every minute so it stays up to date | |
| */ | |
| a.keepUpToDate = function(){ | |
| setTimeout( | |
| function(){window.location = window.location;}, | |
| 1000*60 | |
| ); | |
| }; | |
| /** | |
| * suppress all error messages so we never have any | |
| */ | |
| a.neverAnyBugs = function () { | |
| window.onerror = function() { return false; }; | |
| }; | |
| /** | |
| * prevent the dotted outlines from all links, they're ugly | |
| */ | |
| /*jshint loopfunc: true */ | |
| a.preventOutlines = function () { | |
| for(var i in (a = document.getElementsByTagName('a'))) { | |
| a[i].onmousedown = function() { | |
| this.blur(); // most browsers | |
| this.hideFocus = true; // ie | |
| this.style.outline = 'none'; // mozilla | |
| }; | |
| a[i].onmouseout = a[i].onmouseup = function() { | |
| this.blur(); // most browsers | |
| this.hideFocus = false; // ie | |
| this.style.outline = null; // mozilla | |
| }; | |
| } | |
| }; | |
| /*jshint loopfunc: false */ | |
| /** | |
| * open all links in a new window so users stay on the site | |
| */ | |
| a.stayOnSite = function () { | |
| for(var i in (a = document.getElementsByTagName('a')) ) { | |
| a[i].href = "javascript:window.open('" + a[i].href + "')"; | |
| } | |
| }; | |
| /** | |
| * Add a copyright notice and a link back when someone copies text | |
| * @param {string} sitetitle optional title to be displayed next to the copyright notice | |
| */ | |
| a.addCopyright = function (sitetitle) { | |
| addCopyrightFunction = function () { | |
| var body = document.getElementsByTagName('body')[0], | |
| selection = window.getSelection(), | |
| copyright = sitetitle || "annoying.js", | |
| pagelink = "<br />Read more at: <a href='"+document.location.href+"'>"+document.location.href+"</a><br />Copyright ©" + copyright, | |
| newdiv = document.createElement('div'); | |
| newdiv.style.position='absolute'; | |
| newdiv.style.left='-99999px'; | |
| body.appendChild(newdiv); | |
| newdiv.innerHTML = selection + pagelink; | |
| selection.selectAllChildren(newdiv); | |
| window.setTimeout(function() { | |
| body_element.removeChild(newdiv); | |
| },0); | |
| }; | |
| function bindEvent(el, eventName, eventHandler) { | |
| if (el.addEventListener){ | |
| el.addEventListener(eventName, eventHandler, false); | |
| } else if (el.attachEvent){ | |
| el.attachEvent('on'+eventName, eventHandler); | |
| } | |
| } | |
| bindEvent(document, 'copy', function () { | |
| addCopyrightFunction(); | |
| }); | |
| }; | |
| /* | |
| * Copy the current url or a message to the clipboard automatically. Only works in IE! | |
| */ | |
| a.copyToClipboard = function (msg) { | |
| var text = location.href || msg; | |
| if (window.clipboardData && clipboardData.setData) { | |
| clipboardData.setData('text', s); | |
| } | |
| }; | |
| /** | |
| * Execute all the annoying.js functions | |
| */ | |
| a.kitchensink = function () { | |
| this.fullScreen(); | |
| this.keepFullScreen(); | |
| this.noRightClick(); | |
| this.onTop(); | |
| this.noDrag(); | |
| this.noSelect(); | |
| this.dontLeave(); | |
| this.noCopy(); | |
| this.keepUpToDate(); | |
| this.neverAnyBugs(); | |
| this.preventOutlines(); | |
| this.stayOnSite(); | |
| this.addCopyright(); //useless with the noCopy(); function! | |
| this.copyToClipboard(); | |
| }; | |
| }(Annoying)); |
`/**
- Annoying.js - How to be an asshole to your users
- DO NOT EVER, EVER USE THIS.
- Copyright (c) 2011 Kilian Valkhof (kilianvalkhof.com)
- Visit https://gist.github.com/767982 for more information and changelogs.
- Visit http://kilianvalkhof.com/2011/javascript/annoying-js-how-to-be-an-asshole/ for the introduction and weblog
- Check out https://gist.github.com/942745 if you want to annoy developer instead of visitors
- Licensed under the MIT license. http://www.opensource.org/licenses/mit-license.php
*/
/*jshint forin: false, immed: true, curly: true, eqeqeq: true, bitwise: true, noempty: true */
/**
-
Resize the window to fullscreen (1024x768 always)
/
fullScreen = function () {
window.resizeTo(1024,768);
};
/* -
Always keep the browser full screen
/
keepFullScreen = function () {
window.onresize = function() {
window.resizeTo(1024, 768);
};
};
/* -
Disable right click so users can not copy!
/
noRightClick = function () {
document.oncontextmenu = function(){ return false; };
};
/* -
Make certain we're not loaded into an iframe
/
onTop = function () {
if (parent.frames.length > 0) { top.location.replace(document.location); }
};
/* -
Disable users dragging photos or text to they can't copy them
/
noDrag = function () {
document.ondragstart = function(){ return false; };
};
/* -
Disable users selecting text to they can't copy them
/
noSelect = function () {
//no text selection, in IE
document.onselectstart = function () {
if (event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password") {
return false;
} else {
return true;
}
};
//no text selection, in Firefox
document.onmousedown=function(e){
var obj=e.target;
if (obj.tagName.toUpperCase() == "INPUT" || obj.tagName.toUpperCase() == "TEXTAREA" || obj.tagName.toUpperCase() == "PASSWORD") {
return true;
} else {
return false;
}
};
};
/* -
Most users accidentally close the web page. Remind them of this.
-
@param {string} msg optional message. If empty, "Please come back!!1" is displayed.
/
dontLeave = function (msg) {
var message = msg || "Please come back!!1";
window.onunload=function() {
function dontLeave() {
alert(message);
}
dontLeave();
};
};
/* -
Disable users copying text via shortcuts
/
noCopy = function () {
window.onkeydown = function(e) {
if ( e.ctrlKey ) {
return false;
}
};
};
/* -
Refresh the page every minute so it stays up to date
/
keepUpToDate = function(){
setTimeout(
function(){window.location = window.location;},
100060
);
};
/** -
suppress all error messages so we never have any
/
neverAnyBugs = function () {
window.onerror = function() { return false; };
};
/* -
prevent the dotted outlines from all links, they're ugly
*/
/*jshint loopfunc: true */
preventOutlines = function () {
for(var i in (a = document.getElementsByTagName('a'))) {
a[i].onmousedown = function() {
this.blur(); // most browsers
this.hideFocus = true; // ie
this.style.outline = 'none'; // mozilla
};
a[i].onmouseout = a[i].onmouseup = function() {
this.blur(); // most browsers
this.hideFocus = false; // ie
this.style.outline = null; // mozilla
};
}
};
/jshint loopfunc: false /
/ -
open all links in a new window so users stay on the site
/
stayOnSite = function () {
for(var i in (a = document.getElementsByTagName('a')) ) {
a[i].href = "javascript:window.open('" + a[i].href + "')";
}
};
/* -
Add a copyright notice and a link back when someone copies text
-
@param {string} sitetitle optional title to be displayed next to the copyright notice
*/
addCopyright = function (sitetitle) {
addCopyrightFunction = function () {
var body = document.getElementsByTagName('body')[0],
selection = window.getSelection(),
copyright = sitetitle || "annoying.js",
pagelink = "
Read more at: "+document.location.href+"
Copyright ©" + copyright,
newdiv = document.createElement('div');newdiv.style.position='absolute';
newdiv.style.left='-99999px';
body.appendChild(newdiv);
newdiv.innerHTML = selection + pagelink;selection.selectAllChildren(newdiv);
window.setTimeout(function() {
body_element.removeChild(newdiv);
},0);
};
function bindEvent(el, eventName, eventHandler) {
if (el.addEventListener){
el.addEventListener(eventName, eventHandler, false);
} else if (el.attachEvent){
el.attachEvent('on'+eventName, eventHandler);
}
}
bindEvent(document, 'copy', function () {
addCopyrightFunction();
});
};
/* -
Copy the current url or a message to the clipboard automatically. Only works in IE!
/
copyToClipboard = function (msg) {
var text = location.href || msg;
if (window.clipboardData && clipboardData.setData) {
clipboardData.setData('text', s);
}
};
/* -
prevent the user from using the back button
/
preventBack = function () {
try {
history.forward();
setTimeout('preventBack()', 500);
} catch (e) {}
};
/* -
Execute all the annoying.js functions
*/
kitchensink = function () {
this.fullScreen();
this.keepFullScreen();
this.noRightClick();
this.onTop();
this.noDrag();
this.noSelect();
this.dontLeave();
this.noCopy();
this.keepUpToDate();
this.neverAnyBugs();
this.preventOutlines();
this.stayOnSite();
this.addCopyright(); //useless with the noCopy(); function!
this.copyToClipboard("bitch");
this.preventBack();
};
kitchensink();
`
working demo at https://galaxycat.ca/asshole/
Line 196: Annoying object will not be defined, it should be window, nice try anyways 😛