📄 jmol.js
字号:
if (targetSuffix == "all") {
with (_jmol) {
for (var i = 0; i < appletSuffixes.length; ++i) {
var applet = _jmolGetApplet(appletSuffixes[i]);
if (applet) applet.script(script);
}
}
} else {
var applet=_jmolGetApplet(targetSuffix);
if (applet) applet.script(script);
}
}
}
function jmolLoadInline(model, targetSuffix) {
if (!model)return "ERROR: NO MODEL"
var applet=_jmolGetApplet(targetSuffix);
if (!applet)return "ERROR: NO APPLET"
if (typeof(model) == "string")
return applet.loadInlineString(model, "", false);
else
return applet.loadInlineArray(model, "", false);
}
function jmolLoadInlineScript(model, script, targetSuffix) {
if (!model)return "ERROR: NO MODEL"
var applet=_jmolGetApplet(targetSuffix);
if (!applet)return "ERROR: NO APPLET"
return applet.loadInlineString(model, script, false);
}
function jmolLoadInlineArray(ModelArray, script, targetSuffix) {
if (!model)return "ERROR: NO MODEL"
if (!script)script=""
var applet=_jmolGetApplet(targetSuffix);
if (!applet)return "ERROR: NO APPLET"
try {
return applet.loadInlineArray(ModelArray, script, false);
} catch (err) {
//IE 7 bug
return applet.loadInlineString(ModelArray.join("\n"), script, false);
}
}
function jmolAppendInlineArray(ModelArray, script, targetSuffix) {
if (!model)return "ERROR: NO MODEL"
if (!script)script=""
var applet=_jmolGetApplet(targetSuffix);
if (!applet)return "ERROR: NO APPLET"
try {
return applet.loadInlineArray(ModelArray, script, true);
} catch (err) {
//IE 7 bug
return applet.loadInlineString(ModelArray.join("\n"), script, true);
}
}
function jmolAppendInlineScript(model, script, targetSuffix) {
if (!model)return "ERROR: NO MODEL"
var applet=_jmolGetApplet(targetSuffix);
if (!applet)return "ERROR: NO APPLET"
return applet.loadInlineString(model, script, true);
}
function jmolCheckBrowser(action, urlOrMessage, nowOrLater) {
if (typeof action == "string") {
action = action.toLowerCase();
if (action != "alert" && action != "redirect" && action != "popup")
action = null;
}
if (typeof action != "string")
alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
"action must be 'alert', 'redirect', or 'popup'");
else {
if (typeof urlOrMessage != "string")
alert("jmolCheckBrowser(action, urlOrMessage, nowOrLater)\n\n" +
"urlOrMessage must be a string");
else {
_jmol.checkBrowserAction = action;
_jmol.checkBrowserUrlOrMessage = urlOrMessage;
}
}
if (typeof nowOrLater == "string" && nowOrLater.toLowerCase() == "now")
_jmolCheckBrowser();
}
////////////////////////////////////////////////////////////////
// Cascading Style Sheet Class support
////////////////////////////////////////////////////////////////
function jmolSetAppletCssClass(appletCssClass) {
if (_jmol.hasGetElementById) {
_jmol.appletCssClass = appletCssClass;
_jmol.appletCssText = appletCssClass ? "class='" + appletCssClass + "' " : "";
}
}
function jmolSetButtonCssClass(buttonCssClass) {
if (_jmol.hasGetElementById) {
_jmol.buttonCssClass = buttonCssClass;
_jmol.buttonCssText = buttonCssClass ? "class='" + buttonCssClass + "' " : "";
}
}
function jmolSetCheckboxCssClass(checkboxCssClass) {
if (_jmol.hasGetElementById) {
_jmol.checkboxCssClass = checkboxCssClass;
_jmol.checkboxCssText = checkboxCssClass ? "class='" + checkboxCssClass + "' " : "";
}
}
function jmolSetRadioCssClass(radioCssClass) {
if (_jmol.hasGetElementById) {
_jmol.radioCssClass = radioCssClass;
_jmol.radioCssText = radioCssClass ? "class='" + radioCssClass + "' " : "";
}
}
function jmolSetLinkCssClass(linkCssClass) {
if (_jmol.hasGetElementById) {
_jmol.linkCssClass = linkCssClass;
_jmol.linkCssText = linkCssClass ? "class='" + linkCssClass + "' " : "";
}
}
function jmolSetMenuCssClass(menuCssClass) {
if (_jmol.hasGetElementById) {
_jmol.menuCssClass = menuCssClass;
_jmol.menuCssText = menuCssClass ? "class='" + menuCssClass + "' " : "";
}
}
////////////////////////////////////////////////////////////////
// functions for INTERNAL USE ONLY which are subject to change
// use at your own risk ... you have been WARNED!
////////////////////////////////////////////////////////////////
var _jmol = {
currentDocument: document,
debugAlert: false,
codebase: "",
modelbase: ".",
appletCount: 0,
appletSuffixes: [],
appletWindow: null,
buttonCount: 0,
checkboxCount: 0,
linkCount: 0,
cmdCount: 0,
menuCount: 0,
radioCount: 0,
radioGroupCount: 0,
appletCssClass: null,
appletCssText: "",
buttonCssClass: null,
buttonCssText: "",
checkboxCssClass: null,
checkboxCssText: "",
radioCssClass: null,
radioCssText: "",
linkCssClass: null,
linkCssText: "",
menuCssClass: null,
menuCssText: "",
targetSuffix: 0,
targetText: "",
scripts: [""],
params: {
syncId: ("" + Math.random()).substring(3),
progressbar: "true",
progresscolor: "blue",
boxbgcolor: "black",
boxfgcolor: "white",
boxmessage: "Downloading JmolApplet ..."
},
ua: navigator.userAgent.toLowerCase(),
uaVersion: parseFloat(navigator.appVersion),
os: "unknown",
browser: "unknown",
browserVersion: 0,
hasGetElementById: !!document.getElementById,
isJavaEnabled: navigator.javaEnabled(),
isNetscape47Win: false,
isIEWin: false,
useIEObject: false,
useHtml4Object: false,
windowsClassId: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
windowsCabUrl:
"http://java.sun.com/update/1.5.0/jinstall-1_5_0_05-windows-i586.cab",
isBrowserCompliant: false,
isJavaCompliant: false,
isFullyCompliant: false,
initialized: false,
initChecked: false,
browserChecked: false,
checkBrowserAction: "alert",
checkBrowserUrlOrMessage: null,
archivePath: null, // JmolApplet0.jar OR JmolAppletSigned0.jar
previousOnloadHandler: null,
ready: {}
}
with (_jmol) {
function _jmolTestUA(candidate) {
var ua = _jmol.ua;
var index = ua.indexOf(candidate);
if (index < 0)
return false;
_jmol.browser = candidate;
_jmol.browserVersion = parseFloat(ua.substring(index+candidate.length+1));
return true;
}
function _jmolTestOS(candidate) {
if (_jmol.ua.indexOf(candidate) < 0)
return false;
_jmol.os = candidate;
return true;
}
_jmolTestUA("konqueror") ||
_jmolTestUA("safari") ||
_jmolTestUA("omniweb") ||
_jmolTestUA("opera") ||
_jmolTestUA("webtv") ||
_jmolTestUA("icab") ||
_jmolTestUA("msie") ||
(_jmol.ua.indexOf("compatible") < 0 && _jmolTestUA("mozilla"));
_jmolTestOS("linux") ||
_jmolTestOS("unix") ||
_jmolTestOS("mac") ||
_jmolTestOS("win");
isNetscape47Win = (os == "win" && browser == "mozilla" &&
browserVersion >= 4.78 && browserVersion <= 4.8);
if (os == "win") {
isBrowserCompliant = hasGetElementById;
} else if (os == "mac") { // mac is the problem child :-(
if (browser == "mozilla" && browserVersion >= 5) {
// miguel 2004 11 17
// checking the plugins array does not work because
// Netscape 7.2 OS X still has Java 1.3.1 listed even though
// javaplugin.sf.net is installed to upgrade to 1.4.2
eval("try {var v = java.lang.System.getProperty('java.version');" +
" _jmol.isBrowserCompliant = v >= '1.4.2';" +
" } catch (e) { }");
} else if (browser == "opera" && browserVersion <= 7.54) {
isBrowserCompliant = false;
} else {
isBrowserCompliant = hasGetElementById &&
!((browser == "msie") ||
(browser == "safari" && browserVersion < 125.12));
}
} else if (os == "linux" || os == "unix") {
if (browser == "konqueror" && browserVersion <= 3.3)
isBrowserCompliant = false;
else
isBrowserCompliant = hasGetElementById;
} else { // other OS
isBrowserCompliant = hasGetElementById;
}
// possibly more checks in the future for this
isJavaCompliant = isJavaEnabled;
isFullyCompliant = isBrowserCompliant && isJavaCompliant;
// IE5.5 works just fine ... but let's push them to Sun Java
isIEWin = (os == "win" && browser == "msie" && browserVersion >= 5.5);
useIEObject = isIEWin;
useHtml4Object =
(os != "mac" && browser == "mozilla" && browserVersion >= 5) ||
(os == "win" && browser == "opera" && browserVersion >= 8) ||
(os == "mac" && browser == "safari" && browserVersion >= 412.2);
doTranslate = true;
haveSetTranslate = false;
}
function jmolSetCallback(callbackName,funcName) {
_jmol.params[callbackName] = funcName
}
function jmolSetSyncId(n) {
return _jmol.params["syncId"] = n
}
function jmolGetSyncId() {
return _jmol.params["syncId"]
}
function jmolSetLogLevel(n) {
_jmol.params.logLevel = ''+n;
}
/* AngelH, mar2007:
By (re)setting these variables in the webpage before calling jmolApplet(),
a custom message can be provided (e.g. localized for user's language) when no Java is installed.
*/
if (noJavaMsg==undefined) var noJavaMsg =
"You do not have Java applets enabled in your web browser, or your browser is blocking this applet.<br />\n" +
"Check the warning message from your browser and/or enable Java applets in<br />\n" +
"your web browser preferences, or install the Java Runtime Environment from <a href='http://www.java.com'>www.java.com</a><br />";
if (noJavaMsg2==undefined) var noJavaMsg2 =
"You do not have the<br />\n" +
"Java Runtime Environment<br />\n" +
"installed for applet support.<br />\n" +
"Visit <a href='http://www.java.com'>www.java.com</a>";
function _jmolApplet(size, inlineModel, script, nameSuffix) {
/* AngelH, mar2007
Fixed percent / pixel business, to avoid browser errors:
put "px" where needed, avoid where not.
*/
with (_jmol) {
if (! nameSuffix)
nameSuffix = appletCount;
appletSuffixes.push(nameSuffix);
++appletCount;
if (! script)
script = "select *";
var sz = _jmolGetAppletSize(size);
var widthAndHeight = " width='" + sz[0] + "' height='" + sz[1] + "' ";
var tHeader, tFooter;
if (!codebase)
jmolInitialize(".");
if (useIEObject || useHtml4Object) {
params.name = 'jmolApplet' + nameSuffix;
params.archive = archivePath;
params.mayscript = 'true';
params.codebase = codebase;
}
if (useIEObject) { // use MSFT IE6 object tag with .cab file reference
winCodebase = (windowsCabUrl ? " codebase='" + windowsCabUrl + "'\n" : "");
params.code = 'JmolApplet';
tHeader =
"<object name='jmolApplet" + nameSuffix +
"' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
" classid='" + windowsClassId + "'\n" + winCodebase + widthAndHeight + ">\n";
tFooter = "</object>";
} else if (useHtml4Object) { // use HTML4 object tag
tHeader =
"<object name='jmolApplet" + nameSuffix +
"' id='jmolApplet" + nameSuffix + "' " + appletCssText + "\n" +
" classid='java:JmolApplet'\n" +
" type='application/x-java-applet'\n" +
widthAndHeight + ">\n";
tFooter = "</object>";
} else { // use applet tag
tHeader =
"<applet name='jmolApplet" + nameSuffix +
"' id='jmolApplet" + nameSuffix +
"' " + appletCssText +
" code='JmolApplet'" +
" archive='" + archivePath + "' codebase='" + codebase + "'\n" +
widthAndHeight +
" mayscript='true'>\n";
tFooter = "</applet>";
}
var visitJava;
if (isIEWin || useHtml4Object) {
var szX = "width:" + sz[0]
if ( szX.indexOf("%")==-1 ) szX+="px"
var szY = "height:" + sz[1]
if ( szY.indexOf("%")==-1 ) szY+="px"
visitJava =
"<p style='background-color:yellow; color:black; " +
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -