<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-9634099</id><updated>2009-02-20T19:56:15.205-08:00</updated><title type='text'>Splintor musings</title><subtitle type='html'>My thoughts and discoveries regarding code writing</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9634099.post-113792065774031090</id><published>2006-01-22T01:01:00.000-08:00</published><updated>2006-01-22T01:04:17.750-08:00</updated><title type='text'>Moving to WordPress.com</title><content type='html'>After being annoyed by the Blogger interface, I'm moving to &lt;a href="http://splintor.wordpress.com"&gt;my new blog&lt;/a&gt; at WordPress.com.&lt;br /&gt;&lt;br /&gt;I hope one day they will support importing Blogger blogs again, so I could import this blog to there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-113792065774031090?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/113792065774031090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=113792065774031090' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113792065774031090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113792065774031090'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2006/01/moving-to-wordpresscom.html' title='Moving to WordPress.com'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-113083589474821551</id><published>2005-11-01T01:04:00.000-08:00</published><updated>2005-11-01T01:08:34.196-08:00</updated><title type='text'>Blogger's spell checker doesn't know the word "blog"</title><content type='html'>That's weird. When I used Blogger's spell checker to check for spelling, it didn't recognized the word "blog". Go figure…&lt;br/&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2840/710/1600/blog-spell-check.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/2840/710/320/blog-spell-check.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;Note that Joel &lt;a href="http://www.joelonsoftware.com/items/2005/10/17.html"&gt;said&lt;/a&gt; that Google spell checking is "not based on dictionaries; it's based on word usage statistics of the entire Internet", but I guess he only meant the search engine spell check, not the blog service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-113083589474821551?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/113083589474821551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=113083589474821551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113083589474821551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113083589474821551'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/11/bloggers-spell-checker-doesnt-know.html' title='Blogger&apos;s spell checker doesn&apos;t know the word &quot;blog&quot;'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-113083506275894825</id><published>2005-11-01T00:51:00.000-08:00</published><updated>2005-11-01T00:53:51.290-08:00</updated><title type='text'>User script to make Joel on Software blog posts print better</title><content type='html'>&lt;a href="http://www.joelonsoftware.com/"&gt;Joel on Software blog&lt;/a&gt; &lt;a href="http://www.joelonsoftware.com/items/2005/10/12.html"&gt;sometimes&lt;/a&gt; links to Joel articles and the articles have a "Printer Friendly Version" link below the subtitle. But the posts themselves, which are sometimes quite long, don't have a "printer friendly version". At least I didn't find one.&lt;br/&gt;So I created a &lt;a href="http://www50.brinkster.com/splintor/UserScripts/jositemswidener.user.js"&gt;Greasemonkey user script&lt;/a&gt; to hide all the irrelevant stuff and leave only the post itself, so it takes less paper and ink to print.&lt;br/&gt;&lt;br/&gt;This is of course only for personal use, as I remove the copyright string.&lt;br/&gt;This is subject to change as Joel is &lt;a href="http://www.joelonsoftware.com/items/2005/10/30.html"&gt;currently redesigning his site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-113083506275894825?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/113083506275894825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=113083506275894825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113083506275894825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113083506275894825'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/11/user-script-to-make-joel-on-software.html' title='User script to make Joel on Software blog posts print better'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-113075064392180272</id><published>2005-10-31T00:18:00.000-08:00</published><updated>2005-10-31T01:24:03.960-08:00</updated><title type='text'>ISAPI extension doesn't write to log in IIS 5 when status code is wrong</title><content type='html'>For a long time, we've experienced a problem in which we saw that no request to our ISAPI extension was written to the IIS log. This only happened in IIS 5 and not in IIS 6, so we thought this is an IIS 5 problem.&lt;br /&gt;However, it always felt strange to me, since this is very strange bug, and I didn't see any reference to it on the web.&lt;br /&gt;I tried tweaking our HttpExtensionProc function, but couldn't not find what the problem is, until yesterday, I tried calling the base class (CHttpServer) implementation, and there, I saw that the dwHttpStatusCode member of the EXTENSION_CONTROL_BLOCK structure is set to an error value, and this caused the request to our ISAPI extension to be written to the log.&lt;br /&gt;&lt;br /&gt;A quick search showed me that in the beginning of our HttpExtensionProc function, we set the dwHttpStatusCode member to 0, and then, we never change it. This cause the request to work well, but IIS 5 doesn't write the request to the log. IIS 6 changed this behavior, and does write the request to the log.&lt;br /&gt;&lt;br /&gt;I guess the problem started because someone copied a sample code from &lt;a href="http://www.google.com/search?hl=en&amp;lr=&amp;c2coff=1&amp;q=%22pECB-%3EdwHttpStatusCode+%3D+0%22&amp;btnG=Search"&gt;somewhere&lt;/a&gt;,  and that code initialized the member t the function start, and set it properly at the end, but our coder only took the first part, and forgot to set it in the end, and since it worked, no one really noticed.&lt;br /&gt;Only later, we saw that log is not written, but we couldn't find the reason.&lt;br /&gt;&lt;br /&gt;Well, now we've finally found it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-113075064392180272?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/113075064392180272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=113075064392180272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113075064392180272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/113075064392180272'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/10/isapi-extension-doesnt-write-to-log-in.html' title='ISAPI extension doesn&apos;t write to log in IIS 5 when status code is wrong'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-112615705427167208</id><published>2005-09-07T22:24:00.000-07:00</published><updated>2005-09-07T22:24:14.300-07:00</updated><title type='text'>Paul Graham for Print user script</title><content type='html'>I finally set down to write the &lt;a href="http://www50.brinkster.com/splintor/UserScripts/PaulGrahamForPrint.user.js"&gt;Paul Graham for Print&lt;/a&gt; user script.&lt;br/&gt;I was always annoyed by the formatting of his articles, which might make it easier to read on screen, but take a lot of space when printed.&lt;br/&gt;This script hides the unrelated links and trailing empty lines from the article, and makes the text occupy 100% of the page width.&lt;br/&gt;&lt;br/&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-112615705427167208?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/112615705427167208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=112615705427167208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/112615705427167208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/112615705427167208'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/09/paul-graham-for-print-user-script.html' title='Paul Graham for Print user script'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-112607284884219653</id><published>2005-09-06T23:00:00.000-07:00</published><updated>2005-09-21T23:19:48.656-07:00</updated><title type='text'>IE bug with a label related to select</title><content type='html'>Here is a nice IE bug I just found.&lt;br /&gt;When a &amp;lt;label&amp;gt; is attached to a &amp;lt;select&amp;gt; element, and the user clicks the label, the &amp;lt;select&amp;gt; is selected (which is nice), but its selectedIndex becomes 0 (that's not so nice).&lt;br /&gt;&lt;br /&gt;Here is an &lt;a href="http://www50.brinkster.com/splintor/select-label-ie.htm" target="_blank"&gt;example page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt; I found out that this is an MSDN report bug. See &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;314279&amp;Product=iep"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;314279&amp;Product=iep&lt;/a&gt;. They also suggest a workaround - use the &lt;span style="font-weight:bold;"&gt;onfocusin&lt;/span&gt; event to store the current selection before the focus is actually moved to the list, and reset it later. However, they say "you can only work around this problem in Internet Explorer 6" - I'm not sure why, as the &lt;span style="font-weight:bold;"&gt;onfocusin&lt;/span&gt; event &lt;a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onfocusin.asp"&gt;is said to be supported&lt;/a&gt; on Internet Explorer 5.5 and later.&lt;br /&gt;&lt;br /&gt;However, I would suggest a much simpler solution - simply handling the label event ourselves, without IE to interrupt and destroy. In their sample, I would use:&lt;br /&gt;&lt;span style="color:#008;"&gt;&amp;lt;LABEL for="test" &lt;span style="font-weight:bold;"&gt;onclick="document.getElementById(this.htmlFor).focus(); return false;"&lt;/span&gt;&amp;gt;Citizenship Status:&amp;lt;/LABEL&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my tests, it does the job perfectly well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-112607284884219653?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/112607284884219653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=112607284884219653' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/112607284884219653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/112607284884219653'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/09/ie-bug-with-label-related-to-select.html' title='IE bug with a label related to select'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-110646380706019516</id><published>2005-01-22T22:46:00.000-08:00</published><updated>2005-01-22T23:03:27.060-08:00</updated><title type='text'>Open This URL</title><content type='html'>I finally sat down to find a solution to a problem that been bothering me for a while now. Sometimes I see a URL in a web site (this mostly happens in forums or blogs), which is not a link, so if you want to see it, you must copy and paste it.&lt;br /&gt;&lt;br /&gt;Avant Browser version 10 came with a little toolbar that sometimes show near your selection, but this toolbar is not predictable - I couldn't figure out when exactly Avant decides to show it, and it only has a Search button. Normally, when Google is searched for a URL, this URL is opened, but I don't want to count on this.&lt;br /&gt;&lt;br /&gt;So, what I did is creating a file in &lt;span style="color:#3333ff;"&gt;d:\winnt\web&lt;/span&gt; named &lt;span style="color:#3333ff;"&gt;OpenThisURL.html&lt;/span&gt;, with the following content:&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;&amp;lt;script&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;external.menuArguments.open(external.menuArguments.document.selection.createRange().text);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#3333ff;"&gt;&amp;lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;And I also added a new registry key to &lt;span style="color:#3333ff;"&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt&lt;/span&gt; named "&lt;span style="color:#3333ff;"&gt;Open This &amp;amp;URL&lt;/span&gt;" with default value set to &lt;span style="color:#3333ff;"&gt;d:\WINNT\Web\OpenThisURL.html&lt;/span&gt;. I also added a binary value named &lt;span style="color:#3333ff;"&gt;Contexts&lt;/span&gt;, with its value set to "&lt;span style="color:#3333ff;"&gt;10 00 00&lt;/span&gt;". Now, after restarting the browser, selecting the URL text, and right-clicking adds an "&lt;span style="color:#3333ff;"&gt;Open This URL&lt;/span&gt;" menu item, which opens it in another window.&lt;br /&gt;&lt;br /&gt;This even works well in Avant Browser.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-110646380706019516?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/110646380706019516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=110646380706019516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110646380706019516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110646380706019516'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/01/open-this-url.html' title='Open This URL'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-110623746281546242</id><published>2005-01-20T08:10:00.000-08:00</published><updated>2005-01-20T08:11:02.816-08:00</updated><title type='text'>Formatting code</title><content type='html'>I really need to understand how to format properly in the blog. The blogger editor kind of drivinig me nuts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-110623746281546242?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/110623746281546242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=110623746281546242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110623746281546242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110623746281546242'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/01/formatting-code.html' title='Formatting code'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9634099.post-110623607247373849</id><published>2005-01-20T07:38:00.000-08:00</published><updated>2005-01-23T01:08:03.453-08:00</updated><title type='text'>First Post - Firefox fights</title><content type='html'>I really don't know what to write on my first post, but Joel &lt;a href="http://www.joelonsoftware.com/articles/CollegeAdvice.html"&gt;says&lt;/a&gt; I should write one (great article, by the way. As usual. I should really get to read the JoS book sometime), so I guess I should just start.&lt;br /&gt;&lt;br /&gt;Today I stayed late since I go to the &lt;a href="http://www.tapuz.co.il/tapuzforum/main/forumpage.asp?forum=953"&gt;Achla&lt;/a&gt; meeting, and Sefi was kind enought to pick me.&lt;br /&gt;&lt;br /&gt;Anyway, I just had a big fight with Firefox today. First of all, it insists on blocking my popups, no matter what I tell him. I wonder if this is because I have TBE installed. I guess I need to reinstall a clean Firefox so I can blame all the weird behaviors I found on it. I don't use it as my day-to-day browser anyhow. (I really love Avant Browser. I do hope that the little features I still miss will be entered soon.) I also tried to install a different theme, but failed. At first the themes page didn't loaded, and then it claimed the jar file is corrupted. I really don't know how all of the geeks keep up with this crap. It is event worse than MS problems.&lt;br /&gt;&lt;br /&gt;The real problem was getting the update via XMLHttpRequest to work.&lt;br /&gt;&lt;br /&gt;Our code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;function getXMLHTTP()&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;return new ActiveXObject("Msxml2.XMLHTTP")&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;catch(e)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 60px;font-family:courier new;" &gt;return new ActiveXObject("Microsoft.XMLHTTP")&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;catch(oc)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;return (typeof XMLHttpRequest == "undefined") ? null : new XMLHttpRequest();&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;function updateEventList(szJSUpdateCode)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;if(gXMLHTTP.readyState == 4)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;if(gXMLHTTP.responseText &amp;&amp;amp; gXMLHTTP.responseText.charAt(0) != "&lt;")&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 60px;font-family:courier new;" &gt;eval(gXMLHTTP.responseText); // call retrieved JS code to get events&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 60px;font-family:courier new;" &gt;alert("Failed to download '" + gszURL + "'");&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;gszURL = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;var gXMLHTTP = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;var gszURL = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;function sendRequest(szURL)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;if(gXMLHTTP == null)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;gXMLHTTP = getXMLHTTP();&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;if(gXMLHTTP == null)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;return false;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;if(gXMLHTTP.readyState != 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 40px;font-family:courier new;" &gt;gXMLHTTP.abort()&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;gXMLHTTP.onreadystatechange = updateEventList;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;gszURL = szURL;&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;gXMLHTTP.open("GET", szURL, true); // true means work asynchronically&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;gXMLHTTP.send(null);&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;It is called from the main page to update the list, but when an event is being updated in popup, the popup called opener.sendRequest() with the updated URL, to update the list, and then window.close(). This works well in IE, but for some reason, Firefox decided to stop the download and set the readyState to true without any data in the time that popup closed itself. I don't know exactly why it is, but the solution was to write:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;function delayedRequest(szURL)&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 20px;font-family:courier new;" &gt;setTimeout("sendRequest('" + szURL.replace(/\'/g, "\\\'") + "');", 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="PADDING-LEFT: 0px;font-family:courier new;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;And make the popup call delayedRequest.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9634099-110623607247373849?l=splintor.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://splintor.blogspot.com/feeds/110623607247373849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9634099&amp;postID=110623607247373849' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110623607247373849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9634099/posts/default/110623607247373849'/><link rel='alternate' type='text/html' href='http://splintor.blogspot.com/2005/01/first-post-firefox-fights.html' title='First Post - Firefox fights'/><author><name>splintor</name><uri>http://www.blogger.com/profile/04817781753093724642</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09265467442691789166'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry></feed>