Please, check whether the reference to editor.html or editorws.html in the src attribute of the iframe is correct.
Sketch requires HTML5 canvas. Please, check whether your browser support HTML5 canvas. It is not available in old browsers like IE8.
The initialization of the example failed, the custom JavaScript code does not find the reference to the sketcher. Reasons:
When the iframe is empty the editor is not alive, thus it can not be referred.
Error message on the JavaScript console: Error: Permission denied to access property 'marvin'
: The browser blocks accessing of the iframe content from external JavaScript code if it
violates the same-origin policy. The browser considers that the hosted page and the iframe content come from the same-origin. If both arrives from the local filesystem (file://...), in most cases they
are identified as different origins. See: Same-origin policy for file: URIs
Please, note that 2D coordinate calculation is performed at server side. Marvin JS posts the structure to the Clean2D web service that generates the new coordinates and sends it back to the editor in an MRV. The clean 2D operation can fail if
Please, check that web service is available and it is installed properly, see the installation guide of Marvin JS. If it is necessary, consult with the system administrator of the server that hosts the web services.
It uses Stereo Info web service to calculate stereo info. It may be the same problem than 2D clean issue.
SMILES import/export requires MolConvert web service. If it is configured for the editor but it cannot be accessed, you can get an error message. Conversion can fail in the similar cases than 2D clean fails.
This error may appear in the following situation:
Desired output format is different than MDL molfile or Marvin Document (output file is generated on the remote server by the MolConvert Webservice).
The web page where Marvin JS is embedded is accessed via HTTP secure protocol (its URL address starts with https://
).
A proxy is configured as a frontend for Tomcat servlet container (where MolConvert Webservice is located) and the proxy is configured for https while Tomcat not.
In this case, the URL of the output file generated by the webservice is incorrect: starts with http
instead of https
.
The browser will block downloading this unsecure content in current secure environment. On the JavaScript console you can find the trace of the blocking.
To resolve the issue, modify the proxy settings:
If the proxy is apache: RequestHeader set X-Forwarded-Proto "https"
If the proxy is nginx: more_set_headers "X-Forwarded-Proto: https";
<Host>
section:
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto"/>There are other values that can be set and used: see Tomcat documentation
It may be a browser caching issue. This problem occurs when the content of Marvin JS package is modified (replace to a new version) but the browser still attempts to load the old one. Since the browser has already cached the old version earlier, it tries to prefer the cached version instead of the new one. In most cases, the user may not realize that the browser loads out-dated resources by running the editor. He faces with the issue when an out-dated resource requires any resource that does exist anymore on the server.
To resolve the issue, purge out-dated content from this cache. If you apply a Shift+Reload on the current page, browser refreshes only those content in the local cache that belongs to this page. Clearing of the whole browser cache also resolves the issue.
If you would like to prevent your users to run into this issue, modify the configuration of the server where Marvin JS package is hosted. When the web server hosts a content, it can indicate that it is cacheable or not. As the browser receives the content, it considers to cache it by those information that the server wrote in the header of the content. These info can be the expiration date or various caching directives.
The best practice is skipping the caching of each file (from Marvin JS package) whose name contains the .nocache.
pattern.
Cache-Control
directive the HTTP headers of those files where the given pattern match.
When you modify its config file, please, check whether the mod_expires module is switched on.
<ifmodule mod_expires.c> <Files *.nocache.*> ExpiresActive on ExpiresDefault "access" Header merge Cache-Control "public, max-age=0, must-revalidate" </Files> </ifmodule>
If Marvin JS is wrapped into a web application, there is the chance to control what directives appear in the HTTP headers of web application contents.
Under Tomcat 7, you can apply a built in filter or define a new one to modify HTTP headers for your web application.
Please consult with the manual of your servlet container, how to switch off caching for each file whose name contains the .nocache.
pattern.
If you manage to achieve that the response header contains the following lines at *.nocache.*
files, it is enough to prevent their caching.
Cache-Control no-cache, no-store Pragma no-cache