From 47be3d2271d6b0e26a767a4777bd2bd2e7bb5bb9 Mon Sep 17 00:00:00 2001 From: Rob Garrison Date: Sun, 11 Oct 2015 14:49:42 -0500 Subject: version bump --- README.md | 14 ++- dist/bookmarklet/printliminator.js | 24 +++-- dist/chrome.crx | Bin 19508 -> 19652 bytes dist/chrome.zip | Bin 20541 -> 22487 bytes dist/chrome/_locales/en/messages.json | 4 + dist/chrome/_locales/fr/messages.json | 198 ++++++++++++++++++++++++++++++++++ dist/chrome/manifest.json | 2 +- dist/chrome/popup.css | 4 +- dist/chrome/popup.html | 18 ++-- dist/chrome/popup.js | 17 ++- dist/chrome/printliminator.js | 30 +++--- dist/opera.nex | Bin 19508 -> 19652 bytes package.json | 2 +- printliminator.min.js | 2 +- src/chrome/manifest.json | 2 +- 15 files changed, 269 insertions(+), 48 deletions(-) create mode 100644 dist/chrome/_locales/fr/messages.json diff --git a/README.md b/README.md index 98ac57a..fb230a8 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Get the: * Updates & extensions by [Rob Garrison](http://wowmotty.blogspot.com/). * Icons by [Function](http://wefunction.com/2008/07/function-free-icon-set/). * Print stylesheet based on [Hartija](http://code.google.com/p/hartija/). -* Translations provided by [Transifex]() +* Translations provided by [Transifex](https://www.transifex.com). ### Contributing @@ -34,6 +34,18 @@ Get the: ### Recent Changes +#### Version 4.0.5 (10/9/2015) + +* Readme: + * Add link to Opera extension. + * Fix link to Transifex. +* Demo: Add video & repo link. +* Locales: + * Add French locale. See [pull #7](https://github.com/CSS-Tricks/The-Printliminator/pull/7); thanks [yukulele](https://github.com/yukulele)! + * Update missing locale string & fix button overflow issues +* Include non-numpad keys for font-resizing. Fixes [issue #8](https://github.com/CSS-Tricks/The-Printliminator/issues/8). +* Fix extension messaging options. + #### Version 4.0.4 (9/30/2015) * Add screenshots of Opera extesion. diff --git a/dist/bookmarklet/printliminator.js b/dist/bookmarklet/printliminator.js index 8218efa..f301a32 100644 --- a/dist/bookmarklet/printliminator.js +++ b/dist/bookmarklet/printliminator.js @@ -1,4 +1,4 @@ -/* Printliminator v4.0.4 +/* Printliminator v4.0.5 * https://github.com/CSS-Tricks/The-Printliminator */ /*jshint expr:false */ @@ -8,7 +8,7 @@ var pl = window.thePrintliminator = { - version : '4.0.4', + version : '4.0.5', // preprocess is used to echo in settings from options.json css : { @@ -49,9 +49,12 @@ var pl = window.thePrintliminator = { prevSib : 37, // left arrow hide : 13, // enter undo : 8, // backspace - fontUp : 107, // Numpad + - fontDown : 109, // Numpad - - fontReset : 106, // Numpad * + fontUp1 : 107, // Numpad + + fontUp2 : 187, // = (unshifted +) + fontDown1 : 109, // Numpad - + fontDown2 : 189, // - + fontReset1: 106, // Numpad * + fontReset2: 56, // 8 (unshifted *) print : 44, // PrtScn (keyup only) abort : 27, // Esc @@ -248,15 +251,18 @@ var pl = window.thePrintliminator = { suffix = n.match( /[a-z]+/i )[0]; switch ( event.which ) { - case pl.keys.fontUp : // Numpad + = Increase font size + case pl.keys.fontUp1 : // Numpad + = Increase font size + case pl.keys.fontUp2 : // = (unshifted +) body.style.fontSize = ( parseFloat( n ) + 1 ) + suffix; break; - case pl.keys.fontDown : // Numpad - = Decrease font size + case pl.keys.fontDown1 : // Numpad - = Decrease font size + case pl.keys.fontDown2 : // - body.style.fontSize = ( parseFloat( n ) - 1 ) + suffix; break; - case pl.keys.fontReset : // Numpad * = reset font-size + case pl.keys.fontReset1 : // Numpad * = reset font-size + case pl.keys.fontReset2 : // 8 (unshifted *) body.style.fontSize = ''; break; @@ -526,7 +532,7 @@ var pl = window.thePrintliminator = { frame = el.querySelector( 'iframe.' + controls ).contentWindow.document; // Firefox needs script to open, write, then close... innerHTML doesn't work. frame.open(); - frame.write('
CLOSE
DRAG

Just click stuff on page to remove. Alt-click to remove opposite.

'); + frame.write('
CLOSE
DRAG

Just click stuff on page to remove. Alt-click to remove opposite.

'); frame.close(); diff --git a/dist/chrome.crx b/dist/chrome.crx index 261c8b6..d297532 100644 Binary files a/dist/chrome.crx and b/dist/chrome.crx differ diff --git a/dist/chrome.zip b/dist/chrome.zip index e5519c7..e930b79 100644 Binary files a/dist/chrome.zip and b/dist/chrome.zip differ diff --git a/dist/chrome/_locales/en/messages.json b/dist/chrome/_locales/en/messages.json index a55de73..8047022 100644 --- a/dist/chrome/_locales/en/messages.json +++ b/dist/chrome/_locales/en/messages.json @@ -39,6 +39,10 @@ "message" : "View Keyboard Commands", "description" : "Open a list of keyboard commands" }, + "hideKeyboardCommands" : { + "message" : "Hide Keyboard Commands", + "description" : "Close list of keyboard commands" + }, "keyColumn" : { "message" : "Key", "description" : "Key name column" diff --git a/dist/chrome/_locales/fr/messages.json b/dist/chrome/_locales/fr/messages.json new file mode 100644 index 0000000..5697c0e --- /dev/null +++ b/dist/chrome/_locales/fr/messages.json @@ -0,0 +1,198 @@ +{ + "printliminatorName" : { + "message" : "The Printliminator", + "description" : "Extension name" + }, + "printliminatorDescription" : { + "message" : "Un outil simple pour améliorer l’impression des sites web.", + "description" : "Extension Description" + }, + "commandButtons" : { + "message" : "Outils", + "description" : "Command buttons: undo, stylize, remove graphics & print" + }, + "clickToRemove" : { + "message" : "Cliquez sur les élément de la page pour les faire disparaitre", + "description" : "Click highlight to remove item" + }, + "altClickRemove" : { + "message" : "Alt-cliquez sur un élément pour ne garder que lui", + "description" : "Alt-click highlight to remove everything expect the item" + }, + "undoLast" : { + "message" : "Annuler", + "description" : "Undo the last action" + }, + "addStylize" : { + "message" : "Supprimer
les styles", + "description" : "Add print stylesheet" + }, + "removeGraphics" : { + "message" : "Supprimer
les images", + "description" : "Removes all images, iframes and video from the page" + }, + "sendToPrint" : { + "message" : "Lancer
l’impression", + "description" : "Print the page" + }, + "viewKeyboardCommands" : { + "message" : "Voir les raccourcis clavier", + "description" : "Open a list of keyboard commands" + }, + "hideKeyboardCommands" : { + "message" : "Masquer les raccourcis clavier", + "description" : "Close list of keyboard commands" + }, + "keyColumn" : { + "message" : "Touche", + "description" : "Key name column" + }, + "descriptionColumn" : { + "message" : "Description", + "description" : "Description of key action" + }, + "orText" : { + "message" : "ou", + "description" : "or text" + }, + "keyPageUp" : { + "message" : "PagePrec", + "description" : "Page up key" + }, + "keyUpArrow" : { + "message" : "Flèche haut", + "description" : "Up arrow key text added to title" + }, + "upDescription" : { + "message" : "Sélectionner l’élement parent", + "description" : "Find parent element of current highlight" + }, + "keyPageDown" : { + "message" : "PageSuiv", + "description" : "Page down key" + }, + "keyDownArrow" : { + "message" : "Flèche bas", + "description" : "Down arrow key text added to title" + }, + "downDescription" : { + "message" : "Sélectionner l’élément enfant", + "description" : "Find first visible child element of highlight" + }, + "keyRightArrow" : { + "message" : "Flèche droite", + "description" : "Right arrow text added to title" + }, + "rightDescription" : { + "message" : "Sélectionner l’élément suivant", + "description" : "Find next visible sibling element of highlight" + }, + "keyLeftArrow" : { + "message" : "Flèche Gauche", + "description" : "Left arrow text added to title" + }, + "leftDescription" : { + "message" : "Sélectionner l’élément précédent", + "description" : "" + }, + "keyEnter" : { + "message" : "Entrer", + "description" : "Press enter to remove highlight" + }, + "removeHighlight" : { + "message" : "Supprimer l’élément sélectionner", + "description" : "Remove highlighted box" + }, + "keyBackspace" : { + "message" : "Retour arrière", + "description" : "Press backspace to undo last action" + }, + "undoAction" : { + "message" : "Annuler", + "description" : "Undo last action" + }, + "keyNumpad" : { + "message" : "Pavé num.", + "description" : "Numpad key text description" + }, + "keyNumpadPlus" : { + "message" : "Plus (pavé numérique)", + "description" : "Numpad+ key" + }, + "fontUp" : { + "message" : "Augmenter la taille des caractères", + "description" : "Use keyNumpad+ to increase font size" + }, + "keyNumpadMinus" : { + "message" : "Moins Plus (pavé numérique)", + "description" : "Numpad- key" + }, + "fontDown" : { + "message" : "Réduire la taille des caractères", + "description" : "Use keyNumpad- to decrease font size" + }, + "keyNumpadAsterisk" : { + "message" : "Étoile (pavé numérique", + "description" : "" + }, + "fontReset" : { + "message" : "Réinitialiser la taille des caractères", + "description" : "Reset font size to original" + }, + "mouseLeftClick" : { + "message" : "click gauche", + "description" : "left mouse click" + }, + "keyAlt" : { + "message" : "Alt", + "description" : "Alt-key used with mouse-click" + }, + "removeOpposite" : { + "message" : "Ne garder que l’élément sélectionne", + "description" : "Remove opposite of highlight" + }, + "keyShift" : { + "message" : "Shift", + "description" : "Shift-key used with mouse-click" + }, + "fullWidth" : { + "message" : "Appliquer une largeur de 100% et supprimer les marges (le contour de sélection devient bleu)", + "description" : "Make highlighted element full width & add blue outline" + }, + "keyF1" : { + "message" : "F1", + "description" : "F1 key name" + }, + "keyF1Title" : { + "message" : "Touche F1", + "description" : "F1 key used to toggle messages" + }, + "toggleMessages" : { + "message" : "Afficher/masquer le message d'action", + "description" : "Action message display is toggled by the F1 key" + }, + "keyPS" : { + "message" : "ImprEcrn", + "description" : "Print Screen key (abbreviation)" + }, + "keyPSTitle" : { + "message" : "Imprime Écran", + "description" : "Print Screen key full name added to title" + }, + "printPage" : { + "message" : "Imprimer la page", + "description" : "Print the current page" + }, + "keyEsc" : { + "message" : "Esc", + "description" : "Escape key to close Printliminator" + }, + "keyEscTitle" : { + "message" : "Échap", + "description" : "Escape key full name" + }, + "abort" : { + "message" : "Désactiver Printliminator en conservant l’historique d'annulation", + "description" : "Disable Printliminator, but save undo history." + } +} diff --git a/dist/chrome/manifest.json b/dist/chrome/manifest.json index ee6ba57..1d4a932 100644 --- a/dist/chrome/manifest.json +++ b/dist/chrome/manifest.json @@ -1,6 +1,6 @@ { "name": "__MSG_printliminatorName__", - "version": "4.0.4", + "version": "4.0.5", "manifest_version": 2, "author": "Chris Coyier", "description": "__MSG_printliminatorDescription__", diff --git a/dist/chrome/popup.css b/dist/chrome/popup.css index 6a4d51c..dbb7093 100644 --- a/dist/chrome/popup.css +++ b/dist/chrome/popup.css @@ -73,15 +73,15 @@ li { vertical-align: middle; padding: 4px 16px 4px 4px; white-space: nowrap; - margin: 2px; cursor: pointer; + max-width: 23%; + overflow: hidden; } li:hover { background: #444; } .icon { - display: inline-block; background: url(printliminator.png) no-repeat; width: 25px; height: 25px; diff --git a/dist/chrome/popup.html b/dist/chrome/popup.html index 88af862..bfac373 100644 --- a/dist/chrome/popup.html +++ b/dist/chrome/popup.html @@ -52,21 +52,17 @@

@@ -108,15 +104,15 @@ n - + + + + - - + - - - * + * * diff --git a/dist/chrome/popup.js b/dist/chrome/popup.js index 75efc84..7a3068b 100644 --- a/dist/chrome/popup.js +++ b/dist/chrome/popup.js @@ -53,8 +53,7 @@ var commands = { table = document.querySelector( '#keyboard' ), mode = table.style.display === 'none'; table.style.display = mode ? '' : 'none'; - this.innerHTML = ( mode ? 'Hide' : 'View' ) + ' Keyboard Commands'; - + this.innerHTML = chrome.i18n.getMessage( mode ? 'hideKeyboardCommands' : 'viewKeyboardCommands' ); }, undo : function() { chrome.tabs.executeScript( null, { @@ -63,19 +62,19 @@ var commands = { }, setLanguage : function(){ // update all text content - commands.getMsg( document.querySelectorAll( '[i18n-text]' ), true ); - commands.getMsg( document.querySelectorAll( '[i18n-title]' ), false ); + commands.getMsg( document.querySelectorAll( '[i18n-text]' ), 'text' ); + commands.getMsg( document.querySelectorAll( '[i18n-title]' ), 'title' ); }, - getMsg : function( elms, isText ) { + getMsg : function( elms, target ) { var indx, msgKey, message, len = elms.length; for ( indx = 0; indx < len; indx++ ) { - msgKey = elms[ indx ].getAttribute( 'i18n-' + ( isText ? 'text' : 'title' ) ); + msgKey = elms[ indx ].getAttribute( 'i18n-' + target ); message = chrome.i18n.getMessage( msgKey ); - if ( isText ) { - elms[ indx ].innerHTML = message; + if ( target === 'text' ) { + elms[ indx ].innerHTML += message; } else { - elms[ indx ].title = message; + elms[ indx ].title = message.replace( '
', ' ' ); } } } diff --git a/dist/chrome/printliminator.js b/dist/chrome/printliminator.js index 2ba581f..2711e5a 100644 --- a/dist/chrome/printliminator.js +++ b/dist/chrome/printliminator.js @@ -1,4 +1,4 @@ -/* Printliminator v4.0.4 +/* Printliminator v4.0.5 * https://github.com/CSS-Tricks/The-Printliminator */ /*jshint expr:false */ @@ -8,7 +8,7 @@ var pl = window.thePrintliminator = { - version : '4.0.4', + version : '4.0.5', // preprocess is used to echo in settings from options.json css : { @@ -26,10 +26,10 @@ var pl = window.thePrintliminator = { // message options messageOptions : { - show : undefined, // show messages (F1 to toggle) - limit : undefined, // messages on screen - fade : undefined, // message fadeout (ms) - duration : undefined // message visible (ms) + show : true, // show messages (F1 to toggle) + limit : 6, // messages on screen + fade : 300, // message fadeout (ms) + duration : 4000 // message visible (ms) }, messages : { @@ -62,9 +62,12 @@ var pl = window.thePrintliminator = { prevSib : 37, // left arrow hide : 13, // enter undo : 8, // backspace - fontUp : 107, // Numpad + - fontDown : 109, // Numpad - - fontReset : 106, // Numpad * + fontUp1 : 107, // Numpad + + fontUp2 : 187, // = (unshifted +) + fontDown1 : 109, // Numpad - + fontDown2 : 189, // - + fontReset1: 106, // Numpad * + fontReset2: 56, // 8 (unshifted *) print : 44, // PrtScn (keyup only) abort : 27, // Esc @@ -274,17 +277,20 @@ var pl = window.thePrintliminator = { suffix = n.match( /[a-z]+/i )[0]; switch ( event.which ) { - case pl.keys.fontUp : // Numpad + = Increase font size + case pl.keys.fontUp1 : // Numpad + = Increase font size + case pl.keys.fontUp2 : // = (unshifted +) body.style.fontSize = ( parseFloat( n ) + 1 ) + suffix; pl.showMessage( msg.fontUp + body.style.fontSize ); break; - case pl.keys.fontDown : // Numpad - = Decrease font size + case pl.keys.fontDown1 : // Numpad - = Decrease font size + case pl.keys.fontDown2 : // - body.style.fontSize = ( parseFloat( n ) - 1 ) + suffix; pl.showMessage( msg.fontDown + body.style.fontSize ); break; - case pl.keys.fontReset : // Numpad * = reset font-size + case pl.keys.fontReset1 : // Numpad * = reset font-size + case pl.keys.fontReset2 : // 8 (unshifted *) body.style.fontSize = ''; pl.showMessage( msg.fontReset ); break; diff --git a/dist/opera.nex b/dist/opera.nex index 261c8b6..d297532 100644 Binary files a/dist/opera.nex and b/dist/opera.nex differ diff --git a/package.json b/package.json index 6be123a..bb6f289 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Printliminator", - "version": "4.0.4", + "version": "4.0.5", "description": "Printliminator is a simple tool you can use to make websites print better. One click to activate, and then click to remove elements from the page, remove graphics, and apply better print styling.", "repository": { "type": "git", diff --git a/printliminator.min.js b/printliminator.min.js index f9b7e4c..72c163c 100644 --- a/printliminator.min.js +++ b/printliminator.min.js @@ -1 +1 @@ -!function(){"use strict";var a=window.thePrintliminator={version:"{version}",css:{hilite:"_printliminator_highlight",fullWidth:"_printliminator_full_width",hidden:"_printliminator_hidden",stylized:"_printliminator_stylized",messages:"_printliminator_messages",noSelection:"_printliminator_no_selection",stylesheet:"_printliminator_styles",wrap:"_printliminator_wrap",controls:"_printliminator_controls",drag:"_printliminator_drag_icon",dragActive:"_printliminator_drag_active",icon:"icon",noGraphics:"no_graphics",stylize:"stylize",print:"print",close:"close",undo:"undo",busy:"busy",keyboard:"keyboard",toggle:"toggle"},keys:{parent1:33,parent2:38,child1:34,child2:40,nextSib:39,prevSib:37,hide:13,undo:8,fontUp:107,fontDown:109,fontReset:106,print:44,abort:27,opposite:"altKey",fullWidth:"shiftKey"},noGraphics:"img, iframe:not(._printliminator_controls), object, embed, audio, video, input[type=image], svg",ignoredElm:/^(br|meta|style|link|script)$/i,keyboardOpen:615,keyboardClosed:220,drag:{el:null,pos:[0,0],elm:[0,0]},init:function(){var b=document.body;"undefined"==typeof window.thePrintliminatorVars&&(window.thePrintliminatorVars={init:!0,history:[],messageCache:[],flags:{}},a.addStyles()),a.addControls(),a.addEvent(b,"click",a.bodyClick),a.addEvent(b,"mouseover",a.bodyMouseover),a.addEvent(b,"mouseout",a.removeHighlight),a.addEvent(document,"keyup",a.bodyKeyUp),a.addEvent(document,"keydown",a.bodyKeyDown),a.addEvent(document,"mouseup",a.docMouseUp),a.addEvent(document,"mousemove",a.docMouseMove)},bodyClick:function(b){if(b.preventDefault(),b.stopImmediatePropagation(),"BODY"!==b.target.nodeName&&!a.hasClass(b.target,a.css.messages)){var c,d,e=!1,f=(a.messages,document.body.querySelector("."+a.css.hilite));if(b[a.keys.fullWidth])a.hasClass(f,a.css.fullWidth)||(a.addClass(f,a.css.fullWidth),thePrintliminatorVars.history.push(function(){a.removeClass(f,a.css.fullWidth)}));else{if(b[a.keys.opposite]){if(c=a.getOpposite(f),d=c.length,!d)return;e=!0}else c=[f];a.hide(c),thePrintliminatorVars.history.push(c),e&&a.removeClass(document.querySelector("ul."+a.css.messages),a.css.hidden)}a.clearSelection()}},bodyMouseover:function(b){a.hasClass(b.target,a.css.controls)||a.addClass(b.target,a.css.hilite),window.focus()},bodyKeyUp:function(b){switch(b.preventDefault(),b.which){case a.keys.print:a.print()}},bodyKeyDown:function(b){b.preventDefault();var c,d,e,f,g,h=document.body,i=(a.messages,h.querySelector("."+a.css.hilite)),j=a.css.hidden,k=a.css.hilite;if(i)switch(g="BODY"===i.nodeName,b.which){case a.keys.parent1:case a.keys.parent2:f=i.parentNode,!g&&f&&(a.removeClass(i,k),a.addClass(f,k));break;case a.keys.child1:case a.keys.child2:e=a.getFirstChild(i),e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.nextSib:e=a.getNext(i),!g&&e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.prevSib:e=a.getPrev(i),!g&&e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.hide:g||(a.addClass(i,j),a.addClass(i.parentNode,k),thePrintliminatorVars.history.push(i))}switch(c=window.getComputedStyle(h,null).getPropertyValue("font-size"),d=c.match(/[a-z]+/i)[0],b.which){case a.keys.fontUp:h.style.fontSize=parseFloat(c)+1+d;break;case a.keys.fontDown:h.style.fontSize=parseFloat(c)-1+d;break;case a.keys.fontReset:h.style.fontSize="";break;case a.keys.undo:a.undo();break;case a.keys.abort:a.abort()}},filterElements:function(b){return b&&1===b.nodeType&&!a.ignoredElm.test(b.nodeName)&&!a.hasClass(b,a.css.controls)&&!(a.hasClass(b,a.css.hidden)||"none"===b.style.display)},getOpposite:function(b){for(var c,d=[];"BODY"!==b.nodeName;)c=a.getSiblings(b),d=d.concat(c),b=b.parentNode;return d},getFirstChild:function(b){var c=Array.prototype.filter.call(b.children,a.filterElements);return c.length?c[0]:null},getSiblings:function(b){for(var c=[],d=b.parentNode.firstChild;d;d=d.nextSibling)d!==b&&a.filterElements(d)&&c.push(d);return c},getNext:function(b){for(;b=b.nextSibling;)if(b&&a.filterElements(b))return b;return null},getPrev:function(b){for(;b=b.previousSibling;)if(b&&a.filterElements(b))return b;return null},removeHighlight:function(){var b,c=document.querySelectorAll("."+a.css.hilite),d=c.length;for(b=0;d>b;b++)a.removeClass(c[b],a.css.hilite)},removeGraphics:function(b,c){if(!thePrintliminatorVars.flags.removeGraphics){c=c||document.body;var d,e,f=[],g=c.querySelectorAll(a.noGraphics),h=c.querySelectorAll("*:not(."+a.css.controls+")"),i=h.length;for(d=0;i>d;d++)e=window.getComputedStyle(h[d]).getPropertyValue("background-image"),e&&"none"!==e&&(f.push([h[d],e]),h[d].style.backgroundImage="none");a.removeHighlight(),a.hide(g),thePrintliminatorVars.flags.removeGraphics=!0,thePrintliminatorVars.history.push(function(){for(thePrintliminatorVars.flags.removeGraphics=!1,a.show(g),i=f.length,d=0;i>d;d++)f[d][0].style.backgroundImage=f[d][1]})}},stylize:function(){if(!thePrintliminatorVars.flags.stylize){var b,c=[],d=document.body,e=document.querySelectorAll('link[rel="stylesheet"]'),f=document.querySelectorAll("body *:not(."+a.css.hidden+"):not(."+a.css.controls+")"),g=e.length;for(b=0;g>b;b++)e[b].id!==a.css.stylesheet&&(e[b].disabled=!0);Array.prototype.filter.call(f,function(a){var b=a.getAttribute("style");null!==b&&(a.removeAttribute("style"),c.push({el:a,style:b}))}),a.addClass(d,a.css.stylized),a.removeHighlight(),thePrintliminatorVars.flags.stylize=!0,thePrintliminatorVars.history.push(function(){thePrintliminatorVars.flags.stylize=!1,a.removeClass(d,a.css.stylized);var b,f=e.length;for(b=0;f>b;b++)e[b].disabled=!1;for(f=c.length,b=0;f>b;b++)c[b].el.setAttribute("style",c[b].style)})}},print:function(){var b=document.body.querySelector("iframe."+a.css.controls).contentWindow.document;a.addClass(b.querySelector("li."+a.css.print),a.css.busy),a.removeHighlight(),setTimeout(function(){window.print(),a.busy(function(){a.removeClass(b.querySelector("li."+a.css.print),a.css.busy)})},10)},busy:function(a){if("complete"!==document.readyState){var b=function(c){setTimeout(function(){("complete"===document.readyState||1===c)&&(a(),c=0),--c>0&&b(c)},1e3)};b(20)}else a()},undo:function(){var b=thePrintliminatorVars.history.pop();b&&(a.removeHighlight(),"function"!=typeof b?a.show(b):b.call())},abort:function(){var b=document.body;a.removeHighlight(),a.removeClass(b,a.css.enabled),a.removeEvent(b,"click",a.bodyClick),a.removeEvent(b,"mouseover",a.bodyMouseover),a.removeEvent(b,"mouseout",a.removeHighlight),a.removeEvent(document,"keyup",a.bodyKeyUp),a.removeEvent(document,"keydown",a.bodyKeyDown),a.removeEvent(document,"mouseup",a.docMouseUp),a.removeEvent(document,"mousemove",a.docMouseMove),b.removeChild(document.querySelector("."+a.css.wrap))},addStyles:function(){var b,c=(document.body,'@media print, screen { body._printliminator_stylized { margin: 0 !important; padding: 0 !important; line-height: 1.4 !important; word-spacing: 1.1pt !important; letter-spacing: 0.2pt !important; font-family: Garamond, "Times New Roman", serif !important; color: #000 !important; background: none !important; font-size: 12pt !important; /*Headings */ /* Images */ /* Table */ } body._printliminator_stylized h1, body._printliminator_stylized h2, body._printliminator_stylized h3, body._printliminator_stylized h4, body._printliminator_stylized h5, body._printliminator_stylized h6 { font-family: Helvetica, Arial, sans-serif !important; } body._printliminator_stylized h1 { font-size: 19pt !important; } body._printliminator_stylized h2 { font-size: 17pt !important; } body._printliminator_stylized h3 { font-size: 15pt !important; } body._printliminator_stylized h4, body._printliminator_stylized h5, body._printliminator_stylized h6 { font-size: 12pt !important; } body._printliminator_stylized code { font: 10pt Courier, monospace !important; } body._printliminator_stylized blockquote { margin: 1.3em !important; padding: 1em !important; font-size: 10pt !important; } body._printliminator_stylized hr { background-color: #ccc !important; } body._printliminator_stylized img { float: left !important; margin: 1em 1.5em 1.5em 0 !important; } body._printliminator_stylized a img { border: none !important; } body._printliminator_stylized table { margin: 1px !important; text-align: left !important; border-collapse: collapse !important; } body._printliminator_stylized th { border: 1px solid #333 !important; font-weight: bold !important; } body._printliminator_stylized td { border: 1px solid #333 !important; } body._printliminator_stylized th, body._printliminator_stylized td { padding: 4px 10px !important; } body._printliminator_stylized tfoot { font-style: italic !important; } body._printliminator_stylized caption { background: #fff !important; margin-bottom: 20px !important; text-align: left !important; } body._printliminator_stylized thead { display: table-header-group !important; } body._printliminator_stylized tr { page-break-inside: avoid !important; } ._printliminator_hidden { display: none !important; } ._printliminator_full_width { width: 100% !important; min-width: 100% !important; max-width: 100% !important; margin: 0 !important; } } @media print { ._printliminator_wrap { display: none !important; } } @media screen { body._printliminator_stylized { padding: 20px !important; } ._printliminator_highlight { outline: 3px solid red !important; cursor: default !important; } ._printliminator_highlight._printliminator_full_width { outline-color: blue !important; } ._printliminator_wrap { width: 450px !important; height: 220px; position: fixed !important; top: 20px; right: 20px; z-index: 999999 !important; box-shadow: 0 0 80px black !important; } ._printliminator_wrap iframe { width: 450px !important; height: 220px; border: 0 !important; overflow-x: hidden !important; margin: 0 !important; padding: 0 !important; } ._printliminator_drag_icon { width: 28px !important; height: 20px !important; position: absolute !important; top: 0 !important; left: 0 !important; cursor: move !important; } ._printliminator_drag_icon._printliminator_drag_active { width: 120px !important; height: 100px !important; top: -40px !important; left: -40px !important; } body._printliminator_no_selection, ._printliminator_highlight, ._printliminator_wrap, ._printliminator_drag_icon, ._printliminator_wrap iframe { -webkit-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; } } ');b=document.createElement("style"),b.id=a.css.stylesheet,b.innerHTML=c,document.querySelector("head").appendChild(b)},addControls:function(){var b,c=document.body,d=document.createElement("div"),e=a.css.controls;c.appendChild(d),a.addClass(d,a.css.wrap),a.addClass(d,e),d.innerHTML='
',b=d.querySelector("iframe."+e).contentWindow.document,b.open(),b.write('
CLOSE
DRAG

Just click stuff on page to remove. Alt-click to remove opposite.

'),b.close(),a.addEvent(b.querySelector("."+a.css.noGraphics),"click",a.removeGraphics),a.addEvent(b.querySelector("."+a.css.print),"click",a.print),a.addEvent(b.querySelector("."+a.css.undo),"click",a.undo),a.addEvent(b.querySelector("."+a.css.stylize),"click",a.stylize),a.addEvent(b.querySelector("."+a.css.close),"click",a.abort),a.addEvent(b.querySelector("."+a.css.keyboard),"click",a.keyboard),a.addEvent(document.querySelector("."+a.css.drag),"mousedown",a.dragInit),a.addEvent(b,"mouseup",a.docMouseUp)},keyboard:function(){var b=document.querySelector("."+a.css.wrap),c=b.querySelector("iframe."+a.css.controls),d=c.contentWindow.document.body,e=d.querySelector("#"+a.css.keyboard),f=d.querySelector("."+a.css.keyboard),g=e.style.display,h="none"===g;f.innerHTML=h?"Hide Keyboard Commands":"View Keyboard Commands",e.style.display=h?"":"none",b.style.height=(h?a.keyboardOpen:a.keyboardClosed)+5+"px",c.style.height=(h?a.keyboardOpen:a.keyboardClosed)+5+"px",d.style.height=(h?a.keyboardOpen:a.keyboardClosed)+20+"px"},dragInit:function(){var b=a.drag;a.addClass(document.querySelector("."+a.css.drag),a.css.dragActive),b.el=document.querySelector("."+a.css.wrap),b.elm[0]=b.pos[0]-b.el.offsetLeft,b.elm[1]=b.pos[1]-b.el.offsetTop,a.toggleSelection(!0)},docMouseMove:function(b){var c=a.drag;c.pos[0]=document.all?window.event.clientX:b.pageX,c.pos[1]=document.all?window.event.clientY:b.pageY,null!==a.drag.el&&(c.el.style.left=c.pos[0]-c.elm[0]+"px",c.el.style.top=c.pos[1]-c.elm[1]+"px")},docMouseUp:function(){a.drag.el=null,a.removeClass(document.querySelector("."+a.css.drag),a.css.dragActive),a.toggleSelection()},stopSelection:function(){return!1},toggleSelection:function(b){var c=document.body;b?(a.savedUnsel=c.getAttribute("unselectable"),c.setAttribute("unselectable","on"),a.addClass(c,a.css.noSelection),a.addEvent(c,"onselectstart",a.stopSelection)):(a.savedUnsel&&c.setAttribute("unselectable",a.savedUnsel),a.removeClass(c,a.css.noSelection),a.removeEvent(c,"onselectstart",a.stopSelection)),a.clearSelection()},clearSelection:function(){var a=window.getSelection?window.getSelection():document.selection;a&&(a.removeAllRanges?a.removeAllRanges():a.empty&&a.empty())},hide:function(b){if(b){var c,d=b.length;if("undefined"!=typeof d)for(c=0;d>c;c++)a.addClass(b[c],a.css.hidden);else a.addClass(b,a.css.hidden)}},show:function(b){if(b){var c,d=b.length;if("undefined"!=typeof d)for(c=0;d>c;c++)a.removeClass(b[c],a.css.hidden);else a.removeClass(b,a.css.hidden)}},addClass:function(b,c){b&&(b.classList?b.classList.add(c):a.hasClass(b,c)||(b.className+=" "+c))},removeClass:function(a,b){a&&(a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),""))},hasClass:function(a,b){return a?a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className):!1},addEvent:function(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener(b,c)},removeEvent:function(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener(b,c)}}}(); \ No newline at end of file +!function(){"use strict";var a=window.thePrintliminator={version:"{version}",css:{hilite:"_printliminator_highlight",fullWidth:"_printliminator_full_width",hidden:"_printliminator_hidden",stylized:"_printliminator_stylized",messages:"_printliminator_messages",noSelection:"_printliminator_no_selection",stylesheet:"_printliminator_styles",wrap:"_printliminator_wrap",controls:"_printliminator_controls",drag:"_printliminator_drag_icon",dragActive:"_printliminator_drag_active",icon:"icon",noGraphics:"no_graphics",stylize:"stylize",print:"print",close:"close",undo:"undo",busy:"busy",keyboard:"keyboard",toggle:"toggle"},keys:{parent1:33,parent2:38,child1:34,child2:40,nextSib:39,prevSib:37,hide:13,undo:8,fontUp1:107,fontUp2:187,fontDown1:109,fontDown2:189,fontReset1:106,fontReset2:56,print:44,abort:27,opposite:"altKey",fullWidth:"shiftKey"},noGraphics:"img, iframe:not(._printliminator_controls), object, embed, audio, video, input[type=image], svg",ignoredElm:/^(br|meta|style|link|script)$/i,keyboardOpen:615,keyboardClosed:220,drag:{el:null,pos:[0,0],elm:[0,0]},init:function(){var b=document.body;"undefined"==typeof window.thePrintliminatorVars&&(window.thePrintliminatorVars={init:!0,history:[],messageCache:[],flags:{}},a.addStyles()),a.addControls(),a.addEvent(b,"click",a.bodyClick),a.addEvent(b,"mouseover",a.bodyMouseover),a.addEvent(b,"mouseout",a.removeHighlight),a.addEvent(document,"keyup",a.bodyKeyUp),a.addEvent(document,"keydown",a.bodyKeyDown),a.addEvent(document,"mouseup",a.docMouseUp),a.addEvent(document,"mousemove",a.docMouseMove)},bodyClick:function(b){if(b.preventDefault(),b.stopImmediatePropagation(),"BODY"!==b.target.nodeName&&!a.hasClass(b.target,a.css.messages)){var c,d,e=!1,f=(a.messages,document.body.querySelector("."+a.css.hilite));if(b[a.keys.fullWidth])a.hasClass(f,a.css.fullWidth)||(a.addClass(f,a.css.fullWidth),thePrintliminatorVars.history.push(function(){a.removeClass(f,a.css.fullWidth)}));else{if(b[a.keys.opposite]){if(c=a.getOpposite(f),d=c.length,!d)return;e=!0}else c=[f];a.hide(c),thePrintliminatorVars.history.push(c),e&&a.removeClass(document.querySelector("ul."+a.css.messages),a.css.hidden)}a.clearSelection()}},bodyMouseover:function(b){a.hasClass(b.target,a.css.controls)||a.addClass(b.target,a.css.hilite),window.focus()},bodyKeyUp:function(b){switch(b.preventDefault(),b.which){case a.keys.print:a.print()}},bodyKeyDown:function(b){b.preventDefault();var c,d,e,f,g,h=document.body,i=(a.messages,h.querySelector("."+a.css.hilite)),j=a.css.hidden,k=a.css.hilite;if(i)switch(g="BODY"===i.nodeName,b.which){case a.keys.parent1:case a.keys.parent2:f=i.parentNode,!g&&f&&(a.removeClass(i,k),a.addClass(f,k));break;case a.keys.child1:case a.keys.child2:e=a.getFirstChild(i),e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.nextSib:e=a.getNext(i),!g&&e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.prevSib:e=a.getPrev(i),!g&&e&&(a.removeClass(i,k),a.addClass(e,k));break;case a.keys.hide:g||(a.addClass(i,j),a.addClass(i.parentNode,k),thePrintliminatorVars.history.push(i))}switch(c=window.getComputedStyle(h,null).getPropertyValue("font-size"),d=c.match(/[a-z]+/i)[0],b.which){case a.keys.fontUp1:case a.keys.fontUp2:h.style.fontSize=parseFloat(c)+1+d;break;case a.keys.fontDown1:case a.keys.fontDown2:h.style.fontSize=parseFloat(c)-1+d;break;case a.keys.fontReset1:case a.keys.fontReset2:h.style.fontSize="";break;case a.keys.undo:a.undo();break;case a.keys.abort:a.abort()}},filterElements:function(b){return b&&1===b.nodeType&&!a.ignoredElm.test(b.nodeName)&&!a.hasClass(b,a.css.controls)&&!(a.hasClass(b,a.css.hidden)||"none"===b.style.display)},getOpposite:function(b){for(var c,d=[];"BODY"!==b.nodeName;)c=a.getSiblings(b),d=d.concat(c),b=b.parentNode;return d},getFirstChild:function(b){var c=Array.prototype.filter.call(b.children,a.filterElements);return c.length?c[0]:null},getSiblings:function(b){for(var c=[],d=b.parentNode.firstChild;d;d=d.nextSibling)d!==b&&a.filterElements(d)&&c.push(d);return c},getNext:function(b){for(;b=b.nextSibling;)if(b&&a.filterElements(b))return b;return null},getPrev:function(b){for(;b=b.previousSibling;)if(b&&a.filterElements(b))return b;return null},removeHighlight:function(){var b,c=document.querySelectorAll("."+a.css.hilite),d=c.length;for(b=0;d>b;b++)a.removeClass(c[b],a.css.hilite)},removeGraphics:function(b,c){if(!thePrintliminatorVars.flags.removeGraphics){c=c||document.body;var d,e,f=[],g=c.querySelectorAll(a.noGraphics),h=c.querySelectorAll("*:not(."+a.css.controls+")"),i=h.length;for(d=0;i>d;d++)e=window.getComputedStyle(h[d]).getPropertyValue("background-image"),e&&"none"!==e&&(f.push([h[d],e]),h[d].style.backgroundImage="none");a.removeHighlight(),a.hide(g),thePrintliminatorVars.flags.removeGraphics=!0,thePrintliminatorVars.history.push(function(){for(thePrintliminatorVars.flags.removeGraphics=!1,a.show(g),i=f.length,d=0;i>d;d++)f[d][0].style.backgroundImage=f[d][1]})}},stylize:function(){if(!thePrintliminatorVars.flags.stylize){var b,c=[],d=document.body,e=document.querySelectorAll('link[rel="stylesheet"]'),f=document.querySelectorAll("body *:not(."+a.css.hidden+"):not(."+a.css.controls+")"),g=e.length;for(b=0;g>b;b++)e[b].id!==a.css.stylesheet&&(e[b].disabled=!0);Array.prototype.filter.call(f,function(a){var b=a.getAttribute("style");null!==b&&(a.removeAttribute("style"),c.push({el:a,style:b}))}),a.addClass(d,a.css.stylized),a.removeHighlight(),thePrintliminatorVars.flags.stylize=!0,thePrintliminatorVars.history.push(function(){thePrintliminatorVars.flags.stylize=!1,a.removeClass(d,a.css.stylized);var b,f=e.length;for(b=0;f>b;b++)e[b].disabled=!1;for(f=c.length,b=0;f>b;b++)c[b].el.setAttribute("style",c[b].style)})}},print:function(){var b=document.body.querySelector("iframe."+a.css.controls).contentWindow.document;a.addClass(b.querySelector("li."+a.css.print),a.css.busy),a.removeHighlight(),setTimeout(function(){window.print(),a.busy(function(){a.removeClass(b.querySelector("li."+a.css.print),a.css.busy)})},10)},busy:function(a){if("complete"!==document.readyState){var b=function(c){setTimeout(function(){("complete"===document.readyState||1===c)&&(a(),c=0),--c>0&&b(c)},1e3)};b(20)}else a()},undo:function(){var b=thePrintliminatorVars.history.pop();b&&(a.removeHighlight(),"function"!=typeof b?a.show(b):b.call())},abort:function(){var b=document.body;a.removeHighlight(),a.removeClass(b,a.css.enabled),a.removeEvent(b,"click",a.bodyClick),a.removeEvent(b,"mouseover",a.bodyMouseover),a.removeEvent(b,"mouseout",a.removeHighlight),a.removeEvent(document,"keyup",a.bodyKeyUp),a.removeEvent(document,"keydown",a.bodyKeyDown),a.removeEvent(document,"mouseup",a.docMouseUp),a.removeEvent(document,"mousemove",a.docMouseMove),b.removeChild(document.querySelector("."+a.css.wrap))},addStyles:function(){var b,c=(document.body,'@media print, screen { body._printliminator_stylized { margin: 0 !important; padding: 0 !important; line-height: 1.4 !important; word-spacing: 1.1pt !important; letter-spacing: 0.2pt !important; font-family: Garamond, "Times New Roman", serif !important; color: #000 !important; background: none !important; font-size: 12pt !important; /*Headings */ /* Images */ /* Table */ } body._printliminator_stylized h1, body._printliminator_stylized h2, body._printliminator_stylized h3, body._printliminator_stylized h4, body._printliminator_stylized h5, body._printliminator_stylized h6 { font-family: Helvetica, Arial, sans-serif !important; } body._printliminator_stylized h1 { font-size: 19pt !important; } body._printliminator_stylized h2 { font-size: 17pt !important; } body._printliminator_stylized h3 { font-size: 15pt !important; } body._printliminator_stylized h4, body._printliminator_stylized h5, body._printliminator_stylized h6 { font-size: 12pt !important; } body._printliminator_stylized code { font: 10pt Courier, monospace !important; } body._printliminator_stylized blockquote { margin: 1.3em !important; padding: 1em !important; font-size: 10pt !important; } body._printliminator_stylized hr { background-color: #ccc !important; } body._printliminator_stylized img { float: left !important; margin: 1em 1.5em 1.5em 0 !important; } body._printliminator_stylized a img { border: none !important; } body._printliminator_stylized table { margin: 1px !important; text-align: left !important; border-collapse: collapse !important; } body._printliminator_stylized th { border: 1px solid #333 !important; font-weight: bold !important; } body._printliminator_stylized td { border: 1px solid #333 !important; } body._printliminator_stylized th, body._printliminator_stylized td { padding: 4px 10px !important; } body._printliminator_stylized tfoot { font-style: italic !important; } body._printliminator_stylized caption { background: #fff !important; margin-bottom: 20px !important; text-align: left !important; } body._printliminator_stylized thead { display: table-header-group !important; } body._printliminator_stylized tr { page-break-inside: avoid !important; } ._printliminator_hidden { display: none !important; } ._printliminator_full_width { width: 100% !important; min-width: 100% !important; max-width: 100% !important; margin: 0 !important; } } @media print { ._printliminator_wrap { display: none !important; } } @media screen { body._printliminator_stylized { padding: 20px !important; } ._printliminator_highlight { outline: 3px solid red !important; cursor: default !important; } ._printliminator_highlight._printliminator_full_width { outline-color: blue !important; } ._printliminator_wrap { width: 450px !important; height: 220px; position: fixed !important; top: 20px; right: 20px; z-index: 999999 !important; box-shadow: 0 0 80px black !important; } ._printliminator_wrap iframe { width: 450px !important; height: 220px; border: 0 !important; overflow-x: hidden !important; margin: 0 !important; padding: 0 !important; } ._printliminator_drag_icon { width: 28px !important; height: 20px !important; position: absolute !important; top: 0 !important; left: 0 !important; cursor: move !important; } ._printliminator_drag_icon._printliminator_drag_active { width: 120px !important; height: 100px !important; top: -40px !important; left: -40px !important; } body._printliminator_no_selection, ._printliminator_highlight, ._printliminator_wrap, ._printliminator_drag_icon, ._printliminator_wrap iframe { -webkit-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; } } ');b=document.createElement("style"),b.id=a.css.stylesheet,b.innerHTML=c,document.querySelector("head").appendChild(b)},addControls:function(){var b,c=document.body,d=document.createElement("div"),e=a.css.controls;c.appendChild(d),a.addClass(d,a.css.wrap),a.addClass(d,e),d.innerHTML='
',b=d.querySelector("iframe."+e).contentWindow.document,b.open(),b.write('
CLOSE
DRAG

Just click stuff on page to remove. Alt-click to remove opposite.

'),b.close(),a.addEvent(b.querySelector("."+a.css.noGraphics),"click",a.removeGraphics),a.addEvent(b.querySelector("."+a.css.print),"click",a.print),a.addEvent(b.querySelector("."+a.css.undo),"click",a.undo),a.addEvent(b.querySelector("."+a.css.stylize),"click",a.stylize),a.addEvent(b.querySelector("."+a.css.close),"click",a.abort),a.addEvent(b.querySelector("."+a.css.keyboard),"click",a.keyboard),a.addEvent(document.querySelector("."+a.css.drag),"mousedown",a.dragInit),a.addEvent(b,"mouseup",a.docMouseUp)},keyboard:function(){var b=document.querySelector("."+a.css.wrap),c=b.querySelector("iframe."+a.css.controls),d=c.contentWindow.document.body,e=d.querySelector("#"+a.css.keyboard),f=d.querySelector("."+a.css.keyboard),g=e.style.display,h="none"===g;f.innerHTML=h?"Hide Keyboard Commands":"View Keyboard Commands",e.style.display=h?"":"none",b.style.height=(h?a.keyboardOpen:a.keyboardClosed)+5+"px",c.style.height=(h?a.keyboardOpen:a.keyboardClosed)+5+"px",d.style.height=(h?a.keyboardOpen:a.keyboardClosed)+20+"px"},dragInit:function(){var b=a.drag;a.addClass(document.querySelector("."+a.css.drag),a.css.dragActive),b.el=document.querySelector("."+a.css.wrap),b.elm[0]=b.pos[0]-b.el.offsetLeft,b.elm[1]=b.pos[1]-b.el.offsetTop,a.toggleSelection(!0)},docMouseMove:function(b){var c=a.drag;c.pos[0]=document.all?window.event.clientX:b.pageX,c.pos[1]=document.all?window.event.clientY:b.pageY,null!==a.drag.el&&(c.el.style.left=c.pos[0]-c.elm[0]+"px",c.el.style.top=c.pos[1]-c.elm[1]+"px")},docMouseUp:function(){a.drag.el=null,a.removeClass(document.querySelector("."+a.css.drag),a.css.dragActive),a.toggleSelection()},stopSelection:function(){return!1},toggleSelection:function(b){var c=document.body;b?(a.savedUnsel=c.getAttribute("unselectable"),c.setAttribute("unselectable","on"),a.addClass(c,a.css.noSelection),a.addEvent(c,"onselectstart",a.stopSelection)):(a.savedUnsel&&c.setAttribute("unselectable",a.savedUnsel),a.removeClass(c,a.css.noSelection),a.removeEvent(c,"onselectstart",a.stopSelection)),a.clearSelection()},clearSelection:function(){var a=window.getSelection?window.getSelection():document.selection;a&&(a.removeAllRanges?a.removeAllRanges():a.empty&&a.empty())},hide:function(b){if(b){var c,d=b.length;if("undefined"!=typeof d)for(c=0;d>c;c++)a.addClass(b[c],a.css.hidden);else a.addClass(b,a.css.hidden)}},show:function(b){if(b){var c,d=b.length;if("undefined"!=typeof d)for(c=0;d>c;c++)a.removeClass(b[c],a.css.hidden);else a.removeClass(b,a.css.hidden)}},addClass:function(b,c){b&&(b.classList?b.classList.add(c):a.hasClass(b,c)||(b.className+=" "+c))},removeClass:function(a,b){a&&(a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),""))},hasClass:function(a,b){return a?a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className):!1},addEvent:function(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener(b,c)},removeEvent:function(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener(b,c)}}}(); \ No newline at end of file diff --git a/src/chrome/manifest.json b/src/chrome/manifest.json index ee6ba57..1d4a932 100644 --- a/src/chrome/manifest.json +++ b/src/chrome/manifest.json @@ -1,6 +1,6 @@ { "name": "__MSG_printliminatorName__", - "version": "4.0.4", + "version": "4.0.5", "manifest_version": 2, "author": "Chris Coyier", "description": "__MSG_printliminatorDescription__", -- cgit v1.2.3