Mon, Oct 24, 2005
iCab 3.0 Beta 364 aka "iCab RSS"
iCab's latest beta version features a small built-in RSS reader. It's not meant to be a replacement for fully grown RSS readers (yet ;-), but it's helpful to display RSS feeds quickly in iCab without the need to start an external program. The reader simply is a single HTML document with embedded CSS and JavaScript code that retrieves the feed's data via XMLHttpRequest and does some DOM/XML processing with it. Both the reader source code (yes, you can write your own, improved reader!) and iCab Beta 364 are available to registered users.
And, as always, Alexander's list of bug fixes and new features:
-
There's now a small "RSS Feed" reader build in. When opening RSS Feeds
in iCab (either directly by clicking on a RSS link or by selecting an
item from the RSS popup of the status bar while holding down the
Shift, Option or Command key), iCab will load the RSS Feed and then
will translate it into HTML code and display the result. So RSS Feeds
can be now displayed in iCab as well.
Selecting a RSS Feed from the RSS Popup without pressing any keys will open the RSS Feed as usualy in the default RSS Reader that is configured in the system. When you hold down the Shift, Option or Command key iCab will display the Feed itself and will use the usual shortcuts to decide if the feed will be displayed in the foreground or background and in a window or a tab. - New option "Ignoriere CSS value when required unit is missing" in the "compatibility" preferences. Some web pages are using invalid CSS rules like "width:100;" where the unit (for example "px" or "em" is missing) and expect that the Browser expects "px" in this case. The web standards expect that these invalid rules must be ignored. Some web pages do use the invalid definition and expect that the browser ignores these rules. So it's now possible to configure iCab in which way this is interpreted.
- Fixe some bugs when processing StyleSheets.
- When printing web pages with lots of IFRAME elements iCab could crash.
- The "Same Origin" policy was to strict, so a page that was generated by a "javascript:" URL was not able to modify sub pages of it's own "parent" document.
- Workaround for a bug of the MacOS: When activating Unicode text edit field at a certain time, the MacOS never draws its content. Though entering text works fine, nothing is visible.
- The workaround for SSL connections from Beta 356 had still some problems with HTTP redirections.
- Small modification to make iCab more compatible to Firefox when displaying non-repeated background images in inline elements which is explicitely not defined in the CSS specification.
- When javaScript code modified the padding of elements via JavaScript, the document was not layouted again.
Sun, Oct 16, 2005
Public Evolution
With Web 2.0 on its way, several groups and organizations try to define what the next generation web should look like, among them WHAT and The Web Standards Project . And the browser developers talk about their success in implementing these new features (and their catch up on older standards):
-
Surfin' Safari
Apple's browser for Mac OS X. -
IEBlog
Microsoft's browser that desperately needs standards compliance. -
MozillaZine Weblogs
Several Mozilla-related products and modules, including the Firefox web browser.
iCab 3.0 Beta 359
The day before yesterday brought another iCab beta to registered users. According to the readme, the following bugs are fixed in beta version 359:
- When searching for the Content-Type information for uploading files via HTML forms, only parts of the available mapping informations was used.
- Certain timers were not updated fast enough (affected GIF animations and JavaScript).
- If JavaScript code of an "IFrame" modified its parent document while this was processed and rendered, it could happen that certain parts of the page were not positioned correctly.
Thu, Oct 13, 2005
iCab 3.0 Beta 358
Registered iCab users can check for an update via the Help menu and should get the download page for beta version 358. It includes InScript release 183. Here's what Alexander writes about bug fixes and new features:
- If multiple elements with the overflow property set to a different value than "visible" were nested, the clipping of the inner element could be wrong.
- Local files with longer Japanese names could not be opened because the buffer to encode the file names was too small.
- Numeric HTML entities out of the 32Bit "supplementary" section of the Unicode range did not work correctly.
- If a web page includes the same external StyleSheet multiple times, iCab will now load it only once.
- iCab could crash if JavaScript code replaces its own web page with new HTML code and afterwards tried to access the old code.
- Workaround for broken web servers which are using invalid date formats for "Cookies".
- When cloning HTML elements via JavaScript iCab did not copy all of the CSS properties as well, which were modified via JavaScript.
- Changing the "readonly" state of INPUT fields via JavaScript did not work because the MacOS doesn't allow to change this state. So now iCab will delete the old field and creates a new one with the new state, it needed.
- When changing the MEDIA attribute of StyleSheets via JavaScript, iCab did not process the document again according to the new StyleSheet settings.
- When uploading files through HTML forms, iCab did not provide the correct "Content-Type" information for all file types.
- Some bugfixes to fix layout issues of some web pages.
With these fixes, the Simple Standards-Based Slide Show System (S5) now works correctly :-) (you'll find an example here). And the day numbers in this blog's calendar are aligned properly.
InScript Release 183
InScript release 183 has support for
window.getComputedStyle(element)
. It's not complete yet (the
optional second parameter is ignored), but it should work in most cases.
The function simply returns element.currentStyle
(thanks to
Mark 'Tarquin' Wilton-Jones for the idea). With getPropertyValue
, setProperty
(ignores the optional second parameter) and
removeProperty
added to CSSStyleDeclaration
, the
CSS3 multi-column demo now works in iCab. Pretty cool :-)
Mozilla's String.prototype.quote
is now supported, too. It
simply puts the string in double quotes and escapes all double quotes
and backslashes within.
And there are, of course, bug fixes ... of sorts. new
Function("",body)
(with an empty string where a formal
parameter list should be) is now allowed, although it's definitely
incorrect according to ECMA-262-3. InScript follows Opera's approach and
ignores all empty parameters before the body parameter (Firefox
ignores only the first parameter if it's empty).
Mon, Oct 10, 2005
Further Reading
Here's a list of some other blogs I read from time to time:
-
Tommis Java Blog
some programmers's thoughts on the Java programming language
-
ellioth's blog
Java, C++, Mac OS, programming, philosophy. Something for everygeek.
-
erik's weblog
-
Der Schockwellenreiter
(in German)
Die tägliche Ration Wahnsinn
Sun, Oct 09, 2005
for..in vs. for each
JavaScript features for..in loops (enumerations) for a long time now. You can use it to easily enumerate all property names of an object. E4X (ECMAScript for XML, ECMA-357) specifies "for each" loops that enumerate the property values instead. So, where's the difference?
Consider the object
var obj = { lastName: "Much", firstName: "Thomas" };
The for..in loop
for (var i in obj) document.writeln(i + "<br>");
would yield
lastName
firstName
whereas the for each loop
for each (var i in obj) document.writeln(i + "<br>");
would display
Much
Thomas
To achieve the latter with a for..in loop, you'd have to write
for (var i in obj) document.writeln(obj[i] + "<br>");
JavaScript 1.6 - Array and String generics
The new JavaScript version in Firefox 1.5 introduces "generic" String and Array functions that can be applied on any object by simply calling the function on the String or Array constructor and passing the desired object as the first parameter. Since I could not find a list of all generic functions, I digged through the source code. Here's the result:
-
Array:
concat, every, filter, forEach, indexOf, join, lastIndexOf, map, pop, push, reverse, shift, slice, some, sort, splice, unshift -
String:
charAt, charCodeAt, concat, indexOf, lastIndexOf, localeCompare, match, quote, replace, search, slice, split, substr, substring, toLocaleLowerCase, toLocaleUpperCase, toLowerCase, toUpperCase
JavaScript 1.6 - Array extras
Firefox 1.5 comes with a new JavaScript version 1.6 that brings us some new Array functions.
As of release 182, InScript supports these new functions, too (check <inscript:settings()> to see if your iCab is built with a suitable InScript version). This release also has support for E4X's (ECMAScript for XML, ECMA-357) "for each" loops.
Edited on: Sun, Oct 09, 2005 20:30
Categories: Browsers, iCab & InScript, JavaScript
Secrets about InScript
iCab's JavaScript engine "InScript" has some secrets... And here are two of them:
- To display InScript's settings and version numbers, load the URL <inscript:settings()>
- To see what's going on in InScript's memory management, load the URL <inscript:> or <inscript:inspector()>
Mittelpunkt der Welt
Last week "Element of Crime" released their new album " Mittelpunkt der Welt" (centre of the world - which is, according to the lyrics, where your feet stand). Yes, it's a German band with German lyrics, but if you ever wanted to listen to some unconventional tune, put an ear on this one :-). Ten songs for the moods of autumn.
BTW: In their early years (1985-89) they used to sing in English, but believe me, their German is better ;-)
Edited on: Mon, Oct 10, 2005 10:42
Categories: In Private, Music & Film
Java für Mac OS X
Just in case you did not notice yet - nearly one year ago I published a German book on Java for Mac OS X: Java für Mac OS X . It was released when Mac OS X 10.3 and Java 1.4 where the most up to date versions, but actually (or unfortunately?) there hasn't changed much with Mac OS X 10.4 and Java 5.0.
Finally...
After so many years on the web (IIRC my first home page started over 10 years ago) I finally decided it's time to publish my own weblog :-). Don't expect daily updates, but whenever I feel there's something interesting to say about browsers, JavaScript or my favourite programming language Java, I'll post a few lines.