Skip navigation.
Home

Theming sites - Add, remove, change html / css / js content to a already generated web page

Looking at Deliverance, SiteMesh, Generic postprocessor, Monkeygrease, MouseHole

Injects HTML elements or whatever makes sense in a web page into a page or use an XHTML object which can be freely transformed. Using Java, Python or Ruby.

http://deliverance.openplans.org/
* Python
* Full edit

http://www.opensymphony.com/sitemesh/
* Java Servlet
* Full Edit

http://www.servletsuite.com/tips/aop.htm
http://www.servletsuite.com/servlets/generic1flt.htm
http://www.servletsuite.com/servlets/postproctag.htm
* Java JSP
* Full Edit

http://github.com/manalang/monkeygrease
* Java Servlet
* Predefined spots
* Project seems to be abandoned

http://github.com/evaryont/mousehole
http://github.com/whymirror/mousehole
http://github.com/baroquebobcat/mousehole
* Ruby
* Full Edit

A new Greasemonkey-style proxy was released yesterday.  It's written in 
Java.

Here's an overview I wrote up for the Greasemonkey list:

- Monkeygrease injects HTML elements into four possible positions on a 
page (top and bottom of  or top and bottom of ). MouseHole 
hands the user an XHTML object which can be freely transformed.

- Monkeygrease user scripts are written in XML.  MouseHole scripts can 
be written in Ruby or Javascript (GM-style).

- Monkeygrease requires Java and a configured web application server.  
MouseHole requires Ruby and leverages its own personal web server 
written in Ruby.  However, MouseHole's Windows installer has no 
prerequisites.

- Monkeygrease scripts must be added to an XML file by hand and requires 
a reboot.  MouseHole presents the user with an installation window when 
scripts are encountered on the web.

- Monkeygrease URL matching is done by hand in the XML config.  
MouseHole URL matching is done in the browser using an interface similar 
to GM.

- Monkeygrease offers no database API like GM does (GM_setValue, 
GM_getValue).  MouseHole offers each script a tiny, transparent object 
database. (i.e. myScript.db['lastVisited'] = Time.now.)

- I'm unsure about Monkeygrease's ability to do cross-domain 
XMLHttpRequest.  I can't see a way to do this.  I know MH and GM can 
both do this (i.e. BookBurro, you're on amazon.com and the user script 
is given permission to hit bn.com, powells.com, etc.)

source: http://rubyforge.org/pipermail/mousehole-scripters/2005-November/000175....

On 11/8/05, why the lucky stiff  wrote:
> - Monkeygrease user scripts are written in XML.  MouseHole scripts can
> be written in Ruby or Javascript (GM-style).

The injected stuff is JS or whatever makes sense in a web page.  The
stuff to inject is declared within an XML file.

> - Monkeygrease requires Java and a configured web application server.
> MouseHole requires Ruby and leverages its own personal web server
> written in Ruby.  However, MouseHole's Windows installer has no
> prerequisites.

Monkeygrease is targetted specifically for J2EE apps, so saying it has
a prereq of java+app server is something like saying MouseHole
requires a computer; of course, but it's not a limitation given its
purpose.

> Overall, it seems like Monkeygrease's biggest weakness is avoiding the
> power of a full programming language in its scripting.  The XML file
> only supports a very small number of commands, limiting the creativity
> of the users.  I mean that's what the grease is, right?

Aaron was suggesting an overlay system similar to this for GM; it's
useful while being simple.  I agree that its useful to have more
flexibility, but since MG is server-side, I think complex transforms
(like MH and GM allow) would be a scalability issue.   (I'm actually
already concerned about that.)

source: http://www.mozdev.org/pipermail/greasemonkey/2005-November/006573.html