QUOTE(gtr @ May 4 2005, 03:19 PM)

There is already a widget* for windows lol, sorta, its called konfabulator.
and? Konfabulator is built on xml & javascript alone, originall Mac-only and ported to Windows, a project that was dying until Apple announced Dashboard. But, show me the Yahoo-created Yahoo Local Traffic widget for Konfabulator... Dashboard, being built into the OS, is already showing signs of bigger company involvement even though it's brand new. That makes Dashboard widgets more appealing.
Anyway
My first attempt was localized to just the one widget but I expanded it to where making more widgets compatible would be much easier with less recoding. In fact, the only true recoding I have to do is clean up after lazy developers who use non-standard shortcuts like datatable.innerHTML instead of document.getElementById("datatable").innerHTML. Including just today getting storing and retreiving preferences to work (via cookies). One cavet is that most clickable areas are visually defined with -apple-dashboard-region in the css, which Gecko won't expose, even to javascript, because it ignores it completely because it's unfamiliar. I did my best with a css rule for *[onclick] { cursor: pointer; } but that's obviously far from perfect.
The biggest challenge comes from the xmlhttprequest security model, which makes loading data off the web possible. Traditionally it won't allow data loaded from other domains possible, which means it always fails for local files. Dashboard obviously allows this, but to get Firefox to allow it, you have to enable igned.applets.codebase_principal_support in the about:config and then litter the javascript with requests to allow the script extra access within each callstack, meaning within every function that uses the xmlhttprequest.get function or uses the node data.
Outside of that, including my javascript and css file makes the Yahoo widget work out of the box. Now to try some other widgets.

Update:
I tried it with the Bloglines widget.
- Added my javascript and css file
- Added 1 extra security permissions request
It now works except for a little onkeypress code for hitting enter on the back of the widget.