Difference between revisions of "JSmol Deployment Local"

From Jmol
Jump to navigation Jump to search
(remove obsolete details)
(updates to remove methods for Java applet)
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page will summarize discussions on the jmol-user mailing list on how
+
This page summarizes some advice on how JSmol within web pages can be used to work from a local disk (<code>file://</code> protocol), instead of from a web server (<code>http://</code> protocol).
Jmol should be installed to work from a local hard disk or CD, instead of from
 
a web server.
 
  
 +
This section is in relation to JSmol, versions 14 and later, particularly. It only relates to HTML5 file access, and only to files loaded using script commands such as <code>load</code> and <code>script</code>.
  
= Rules for first-time user developing Jmol pages that will run from local disk: =
+
Note that you can prompt the page visitor for a local file by using the Jmol script command <code>load ?</code> or a URL using <code>load <nowiki>http://?</nowiki></code>.
  
== Method (a) ==
+
== Specific browser considerations ==
Use pages only from a web server (you may install a local web server on your computer for testing purposes).
 
  
== Method (b) ==
+
=== Firefox / Windows ===
(Works both locally and on the web server; depends on Java security rules, which might change in a future.)
 
  
Molecule files (e.g. <tt>.pdb</tt>, <tt>.mol</tt>) must be in the same folder as the applet file or below it (in a subfolder).
+
You will be able to read both binary and text files locally, but it is necessary to change the default setting:
 +
*navigate to <code>about:config</code>, find the <code>security.fileuri.strict_origin_policy</code> entry and set it <code>false</code>.
  
Valid examples:
+
Despite this, there may be occasions where access fails with errors, depending of the folder location of files composing the page and the JSmol library. (No certain description of setups that fail has been found yet)
  
1.- Put {{File|Jmol.js}} and {{File|JmolApplet.jar}} on the top folder level of your website, then, for a page in a subfolder:
+
=== Chrome / Windows ===
  
<html>
+
The old method of starting Chrome using the command-line flag <code>--allow-file-access-from-files</code> for local file access is no longer possible.  
  <head>
 
    <script type="text/javascript" src="../Jmol.js"></script>
 
  </head>
 
  <body>
 
    <script type="text/javascript">
 
      jmolInitialize("../");
 
      jmolApplet(200, "load caffeine.xyz");
 
    </script>
 
  </body>
 
</html>
 
  
 +
The only likely solution if you wish to use Chrome is to set-up a local web server (read below).
  
2.- Same for page in a subfolder two levels below:
+
It is '''not''' possible to load local '''binary''' files from standard script commands. That is, no direct file reading with any of the following in their names:
 +
  .bin .gz .jmol .jpg .map .mrc .omap .png .pse .smol .spartan .zip
  
<html>
+
This does not apply to files drag-dropped onto JSmol or files loaded using "?", which use the HTML5 FileReader object. That method reads binary files without a problem.
  <head>
 
    <script type="text/javascript" src="../../Jmol.js"></script>
 
  </head>
 
  <body>
 
    <script type="text/javascript">
 
      jmolInitialize("../../");
 
      jmolApplet(200, "load caffeine.xyz");
 
    </script>
 
  </body>
 
</html>
 
  
 +
=== Edge / Windows ===
  
3.- same as (1) but the model sits in a subfolder below the page itself:
+
Situation is the same as for Chrome (pending confirmation)
  
<html>
+
=== Opera / Windows ===
  <head>
+
to-do
    <script type="text/javascript" src="../Jmol.js"></script>
 
  </head>
 
  <body>
 
    <script type="text/javascript">
 
      jmolInitialize("../");
 
      jmolApplet(200, "load models/caffeine.xyz");
 
    </script>
 
  </body>
 
</html>
 
  
 +
=== Firefox / Mac ===
 +
to-do
  
== Method (c) ==
+
=== Chrome / Mac ===
(Works both locally and on the web server.)
+
to-do
  
Use the "signed applet", {{File|JmolAppletSigned.jar}},
+
=== Safari / Mac ===
included in the Jmol distribution [http://sourceforge.net/project/showfiles.php?group_id=23629 download page]
+
to-do
  
You can put applet files, model files and page files wherever you want to.
+
== Using a local web server ==
 +
Several packages are available that will install a local server in your system. You will then be able to access your local pages and molecule files by activaning such server and access the pages via <code>localhost:</code> or <code><nowiki>http://127.0.0.1/</nowiki></code> protocols.
  
The users will receive a security warning from Java asking whether they accept the use of the signed applet (this may deter novice users from entering your pages, unless you first give them precise advice that this will show up and it is not harmful).
+
This removes any limitations in accessing files. Note that for binary files, at least with some browsers, you need to configure the <code>serverURL</code> item in the [[Jmol_JavaScript_Object/Info#Files_and_paths|<code>Info</code> variable]] to use the PHP filter, likely from the same server.
  
 +
As an easier alternative, there seems to be some extensions for the Chrome browser that will act as local server. Compatibility with latest Chrome security policies has not been checked.
  
 +
== Legacy documentation ==
 +
Mainly involving use of Jmol Java Applets in web pages (not supported by current web browsers)
  
= Comments =
+
See the [[Special:PermanentLink/8397|old version of this page]].
 
 
----------
 
 
 
From René Kanters
 
 
 
In order to have the applet use be signed or not signed depending on whether you are serving
 
the pages from a server or testing them locally, one can use the following construct for
 
the initialization:
 
 
 
jmolInitialize("../../Jmol", window.location.protocol == "file:"); // use the signed applet if needed
 
 
 
 
 
----------
 
 
 
From Bob Hanson:
 
 
 
I believe the rule is simply this:
 
 
 
On a hard drive, all files opened by the applet (model or otherwise)
 
must be in the same directory or a subdirectory of the {{File|.jar}} file.
 
 
 
The only problem comes if you place the {{File|.jar}} file in some other subdirectory
 
not somewhere on the "path" to the model file. Then the page might work if
 
uploaded to a server, but won't work on your local machine in <tt>file:///</tt> mode.
 
 
 
Nick Greeves provides this screen shot of his directory structure, where
 
you can see how he has {{File|caffeine.xyz.gz}} in the {{Directory|model}} subdirectory of the {{Directory|jmol}} directory,
 
where {{File|JmolApplet.jar}} is found.
 
 
 
[[Image:Local_Directory_Structure.png]]
 
 
 
HTML, JS, IMG files -- all these can be anywhere,
 
including on totally different servers.
 
 
 
So, if this is important to you, place the {{File|.jar}} file in the TOP subdirectory
 
of your project, and there will be no problem. (I am not recommending placing the {{File|.jar}} file in {{Directory|c:\}})
 
 
 
 
 
----------
 
 
 
From Nick Greeves:
 
 
 
For the record here's the source of {{File|WorksFromaCD.html}} that shows the paths.
 
 
 
<html>
 
  <head>
 
    <title>Simple example</title>
 
    <script src="Jmol.js"></script>
 
  </head>
 
  <body>
 
    <script>
 
      jmolInitialize("../jmol");
 
      jmolApplet(200, "load model/caffeine.xyz.gz");
 
    </script>
 
  </body>
 
</html>
 
 
 
 
 
----------
 
 
 
From [[User:AngelHerraez|Angel Herráez]]:
 
Nick, I think although your example is correct, it will mislead people. There is no need for a {{Directory|jmol}} folder. Your code should be
 
 
 
jmolInitialize("./");
 
 
 
since the applet is in the same directory/folder as the html page.
 
Even "" might work the same as "{{Directory|./}}"
 

Latest revision as of 11:52, 11 August 2025

This page summarizes some advice on how JSmol within web pages can be used to work from a local disk (file:// protocol), instead of from a web server (http:// protocol).

This section is in relation to JSmol, versions 14 and later, particularly. It only relates to HTML5 file access, and only to files loaded using script commands such as load and script.

Note that you can prompt the page visitor for a local file by using the Jmol script command load ? or a URL using load http://?.

Specific browser considerations

Firefox / Windows

You will be able to read both binary and text files locally, but it is necessary to change the default setting:

  • navigate to about:config, find the security.fileuri.strict_origin_policy entry and set it false.

Despite this, there may be occasions where access fails with errors, depending of the folder location of files composing the page and the JSmol library. (No certain description of setups that fail has been found yet)

Chrome / Windows

The old method of starting Chrome using the command-line flag --allow-file-access-from-files for local file access is no longer possible.

The only likely solution if you wish to use Chrome is to set-up a local web server (read below).

It is not possible to load local binary files from standard script commands. That is, no direct file reading with any of the following in their names:

 .bin .gz .jmol .jpg .map .mrc .omap .png .pse .smol .spartan .zip

This does not apply to files drag-dropped onto JSmol or files loaded using "?", which use the HTML5 FileReader object. That method reads binary files without a problem.

Edge / Windows

Situation is the same as for Chrome (pending confirmation)

Opera / Windows

to-do

Firefox / Mac

to-do

Chrome / Mac

to-do

Safari / Mac

to-do

Using a local web server

Several packages are available that will install a local server in your system. You will then be able to access your local pages and molecule files by activaning such server and access the pages via localhost: or http://127.0.0.1/ protocols.

This removes any limitations in accessing files. Note that for binary files, at least with some browsers, you need to configure the serverURL item in the Info variable to use the PHP filter, likely from the same server.

As an easier alternative, there seems to be some extensions for the Chrome browser that will act as local server. Compatibility with latest Chrome security policies has not been checked.

Legacy documentation

Mainly involving use of Jmol Java Applets in web pages (not supported by current web browsers)

See the old version of this page.