After seeing so many positive reviews of the upcoming Firefox 3, I decided to try the latest beta (5) version. It seems indeed to be fast when dealing with complex javascript. While there are a few features I am not too keen about [1], I liked the extra speed (and the reduced RAM usage) so much that I have been using it almost exclusively. That is until now, since I can't rely on it to test Crunchy. Update: this is no longer true, thanks to a reader's comment. The fix was to move the onblur event to the file input, indicated by HERE.
To load a local html file [2] into Crunchy, a two-step process has to be used due to normal javascript security:
This file browser feature is not something I test regularly when working on Crunchy, nor is it something that can be tested via standard Python unit tests. [3] When I noticed the new bug, it never crossed my mind that this could be a "new Firefox feature" and thought it was something I had broken in Crunchy's code. [4] It was only after I tried a few old releases of Crunchy (to figure out when "I" broke the code) that I figured out that the problem was not due to anything I wrote.
I have not been able to find any note about this new behavior of Firefox. Since this is still a beta, I guess I'll have to wait until the final Firefox 3 release to figure out if I need to change the way I load files. [5]
====
[1] One change I don't like is the rather gaudy auto-suggest list when typing a url.
[2] The same method is used to load reStructuredText files and others.
[3] I really need to investigate twill for this.
[4] One more reason to have a complete unit test coverage. Since I don't, I automatically assumed it was something I had done.
[5] If anyone has any lead as to how to do so reliably in Firefox 3b5 as well as with other browsers, I'd be keen to hear about it.
To load a local html file [2] into Crunchy, a two-step process has to be used due to normal javascript security:
The first form allows to browse the local drive for a particular file. The second one sends the chosen file's path to the browser as an argument to the "/local" action, something like /local?url=file_path. Unfortunately, when using Firefox 3 beta 5, no argument is passed and we get /local?url= instead. And of course no file can be loaded.
<form name="browser_local"
onblur="document.submit_local.url.value =
document.browser_local.filename.value">
<input name="filename" type="file" HERE >
</form>
<form action="/local" method="get" name="submit_local">
<input name="url" type="hidden">
<input class="crunchy" type="submit">
value="Load local html tutorial" />
</form>
This file browser feature is not something I test regularly when working on Crunchy, nor is it something that can be tested via standard Python unit tests. [3] When I noticed the new bug, it never crossed my mind that this could be a "new Firefox feature" and thought it was something I had broken in Crunchy's code. [4] It was only after I tried a few old releases of Crunchy (to figure out when "I" broke the code) that I figured out that the problem was not due to anything I wrote.
I have not been able to find any note about this new behavior of Firefox. Since this is still a beta, I guess I'll have to wait until the final Firefox 3 release to figure out if I need to change the way I load files. [5]
====
[1] One change I don't like is the rather gaudy auto-suggest list when typing a url.
[2] The same method is used to load reStructuredText files and others.
[3] I really need to investigate twill for this.
[4] One more reason to have a complete unit test coverage. Since I don't, I automatically assumed it was something I had done.
[5] If anyone has any lead as to how to do so reliably in Firefox 3b5 as well as with other browsers, I'd be keen to hear about it.
3 comments:
You should report a bug, and/or ask on their support channels.
Blur events don't bubble, per spec. The fact that they did for some types of form controls (but not others, note!) was a bug in Gecko 1.8.
You want to put the blur handler on the file input.
Thank you boris; this indeed solve the problem and I have updated the post accordingly.
Post a Comment