On Tue, Apr 16, 2013 at 9:02 PM, Shane Ó Conchúir <spiderb...@gmail.com>wrote:
> Hi all,
>
> I hit a problem where opening a link on my page which triggers a file
> download breaks the JSmol applet (jsmol-13.1.14b) in Chrome 23.0.1271.95 under
> Linux Mint 13 (Maya). I do not know whether this problem exists on other
> platforms/browsers. I also have a solution which works for me (below) but
> thought I would share the problem in case this is something the devs wish
> to look into and also to share the solution for anyone hitting the same
> problem. Also, someone may point out if there is a simpler fix to mine
> below / that I was doing something silly :-).
>
> I'm doing the following
>
> - The page has links to download files from the database. The links have
> the form
> <a href='?query=downloadfile&ID=6&download=gz'>...</a>
>
Q: What is the purpose of this link? You say this reloads the whole page?
Why do you want to do that?
> Clicking on a link causes a page reload which reads the file from the
> database and prints the following:
>
Q: Prints this where? How?
> Content-Type: application/x-gzip
> Content-Disposition: attachment; filename="somefilename"
> Content-Length: somelength
>
> [contents of file]
>
> Because the new page is an attachment, the page does not visibly reload so
> the user gets the usual file download dialog. However, the page load breaks
> the JSmol applet, maybe due to garbage collection.
>
I'm not familiar with using attachment with page loads. I think it just
destroys the applet. Any page load would be disastrous for an applet of any
kind.
Q: Can't you avoid a page download?
>
> My solution to this was to use an iframe. First, I replaced the links with
> ones as follows:
> <a id='PSELink-6' href=''>...</a>
> Then I include the following in $(document).ready:
> $('[id^="PSELink-"]').click(function() {
> this_id = $(this).attr('id');
> ID = parseInt(this_id.split('-')[1]);
> var iframe = document.createElement("iframe");
> iframe.src = '
> http://my.server.com/mywebpage.py?query=downloadfile&ID=<http://my.server.com/mywebpage.py?query=downloadfile&ID=>'
> + ID + '&download=gz';
> iframe.style.display = "none";
> document.body.appendChild(iframe);
> return false; // prevent page reload
> });
>
> Clicking on the link still triggers a file download but (I'm guessing
> since the page does not reload) the JSmol applet continues to function.
>
>
Q: Why not just load the file using JSmol's functions and AJAX?
> Regards,
> Shane
>
>
>
> ------------------------------------------------------------------------------
> Precog is a next-generation analytics platform capable of advanced
> analytics on semi-structured data. The platform includes APIs for building
> apps and a phenomenal toolset for data science. Developers can use
> our toolset for easy data analysis & visualization. Get a free account!
> http://www2.precog.com/precogplatform/slashdotnewsletter
> _______________________________________________
> Jmol-developers mailing list
> Jmol-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jmol-developers
>
>
--
Robert M. Hanson
Larson-Anderson Professor of Chemistry
Chair, Chemistry Department
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr
If nature does not answer first what we want,
it is better to take what answer we get.
-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Jmol-developers mailing list
Jmol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-developers