📄 hostenv_browser.js
字号:
/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml*/if(typeof window == 'undefined'){ dojo.raise("no window object");}// attempt to figure out the path to dojo if it isn't set in the config(function() { // before we get any further with the config options, try to pick them out // of the URL. Most of this code is from NW if(djConfig.allowQueryConfig){ var baseUrl = document.location.toString(); // FIXME: use location.query instead? var params = baseUrl.split("?", 2); if(params.length > 1){ var paramStr = params[1]; var pairs = paramStr.split("&"); for(var x in pairs){ var sp = pairs[x].split("="); // FIXME: is this eval dangerous? if((sp[0].length > 9)&&(sp[0].substr(0, 9) == "djConfig.")){ var opt = sp[0].substr(9); try{ djConfig[opt]=eval(sp[1]); }catch(e){ djConfig[opt]=sp[1]; } } } } } if(((djConfig["baseScriptUri"] == "")||(djConfig["baseRelativePath"] == "")) &&(document && document.getElementsByTagName)){ var scripts = document.getElementsByTagName("script"); var rePkg = /(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i; for(var i = 0; i < scripts.length; i++) { var src = scripts[i].getAttribute("src"); if(!src) { continue; } var m = src.match(rePkg); if(m) { var root = src.substring(0, m.index); if(src.indexOf("bootstrap1") > -1) { root += "../"; } if(!this["djConfig"]) { djConfig = {}; } if(djConfig["baseScriptUri"] == "") { djConfig["baseScriptUri"] = root; } if(djConfig["baseRelativePath"] == "") { djConfig["baseRelativePath"] = root; } break; } } } // fill in the rendering support information in dojo.render.* var dr = dojo.render; var drh = dojo.render.html; var drs = dojo.render.svg; var dua = drh.UA = navigator.userAgent; var dav = drh.AV = navigator.appVersion; var t = true; var f = false; drh.capable = t; drh.support.builtin = t; dr.ver = parseFloat(drh.AV); dr.os.mac = dav.indexOf("Macintosh") >= 0; dr.os.win = dav.indexOf("Windows") >= 0; // could also be Solaris or something, but it's the same browser dr.os.linux = dav.indexOf("X11") >= 0; drh.opera = dua.indexOf("Opera") >= 0; drh.khtml = (dav.indexOf("Konqueror") >= 0)||(dav.indexOf("Safari") >= 0); drh.safari = dav.indexOf("Safari") >= 0; var geckoPos = dua.indexOf("Gecko"); drh.mozilla = drh.moz = (geckoPos >= 0)&&(!drh.khtml); if (drh.mozilla) { // gecko version is YYYYMMDD drh.geckoVersion = dua.substring(geckoPos + 6, geckoPos + 14); } drh.ie = (document.all)&&(!drh.opera); drh.ie50 = drh.ie && dav.indexOf("MSIE 5.0")>=0; drh.ie55 = drh.ie && dav.indexOf("MSIE 5.5")>=0; drh.ie60 = drh.ie && dav.indexOf("MSIE 6.0")>=0; drh.ie70 = drh.ie && dav.indexOf("MSIE 7.0")>=0; // TODO: is the HTML LANG attribute relevant? dojo.locale = (drh.ie ? navigator.userLanguage : navigator.language).toLowerCase(); dr.vml.capable=drh.ie; drs.capable = f; drs.support.plugin = f; drs.support.builtin = f; if (document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("org.w3c.dom.svg", "1.0") ){ drs.capable = t; drs.support.builtin = t; drs.support.plugin = f; }})();dojo.hostenv.startPackage("dojo.hostenv");dojo.render.name = dojo.hostenv.name_ = 'browser';dojo.hostenv.searchIds = [];// These are in order of decreasing likelihood; this will change in time.dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];dojo.hostenv.getXmlhttpObject = function(){ var http = null; var last_e = null; try{ http = new XMLHttpRequest(); }catch(e){} if(!http){ for(var i=0; i<3; ++i){ var progid = dojo.hostenv._XMLHTTP_PROGIDS[i]; try{ http = new ActiveXObject(progid); }catch(e){ last_e = e; } if(http){ dojo.hostenv._XMLHTTP_PROGIDS = [progid]; // so faster next time break; } } /*if(http && !http.toString) { http.toString = function() { "[object XMLHttpRequest]"; } }*/ } if(!http){ return dojo.raise("XMLHTTP not available", last_e); } return http;}/** * Read the contents of the specified uri and return those contents. * * @param uri A relative or absolute uri. If absolute, it still must be in the * same "domain" as we are. * * @param async_cb If not specified, load synchronously. If specified, load * asynchronously, and use async_cb as the progress handler which takes the * xmlhttp object as its argument. If async_cb, this function returns null. * * @param fail_ok Default false. If fail_ok and !async_cb and loading fails, * return null instead of throwing. */dojo.hostenv.getText = function(uri, async_cb, fail_ok){ var http = this.getXmlhttpObject(); if(async_cb){ http.onreadystatechange = function(){ if(4==http.readyState){ if((!http["status"])||((200 <= http.status)&&(300 > http.status))){ // dojo.debug("LOADED URI: "+uri); async_cb(http.responseText); } } } } http.open('GET', uri, async_cb ? true : false); try{ http.send(null); if(async_cb){ return null; } if((http["status"])&&((200 > http.status)||(300 <= http.status))){ throw Error("Unable to load "+uri+" status:"+ http.status); } }catch(e){ if((fail_ok)&&(!async_cb)){ return null; }else{ throw e; } } return http.responseText;}/* * It turns out that if we check *right now*, as this script file is being loaded, * then the last script element in the window DOM is ourselves. * That is because any subsequent script elements haven't shown up in the document * object yet. */ /*function dj_last_script_src() { var scripts = window.document.getElementsByTagName('script'); if(scripts.length < 1){ dojo.raise("No script elements in window.document, so can't figure out my script src"); } var script = scripts[scripts.length - 1]; var src = script.src; if(!src){ dojo.raise("Last script element (out of " + scripts.length + ") has no src"); } return src;}if(!dojo.hostenv["library_script_uri_"]){ dojo.hostenv.library_script_uri_ = dj_last_script_src();}*/dojo.hostenv.defaultDebugContainerId = 'dojoDebug';dojo.hostenv._println_buffer = [];dojo.hostenv._println_safe = false;dojo.hostenv.println = function (line){ if(!dojo.hostenv._println_safe){ dojo.hostenv._println_buffer.push(line); }else{ try { var console = document.getElementById(djConfig.debugContainerId ? djConfig.debugContainerId : dojo.hostenv.defaultDebugContainerId); if(!console) { console = document.getElementsByTagName("body")[0] || document.body; } var div = document.createElement("div"); div.appendChild(document.createTextNode(line)); console.appendChild(div); } catch (e) { try{ // safari needs the output wrapped in an element for some reason document.write("<div>" + line + "</div>"); }catch(e2){ window.status = line; } } }}dojo.addOnLoad(function(){ dojo.hostenv._println_safe = true; while(dojo.hostenv._println_buffer.length > 0){ dojo.hostenv.println(dojo.hostenv._println_buffer.shift()); }});function dj_addNodeEvtHdlr(node, evtName, fp, capture){ var oldHandler = node["on"+evtName] || function(){}; node["on"+evtName] = function(){ fp.apply(node, arguments); oldHandler.apply(node, arguments); } return true;}/* Uncomment this to allow init after DOMLoad, not after window.onload// Mozilla exposes the event we could useif (dojo.render.html.mozilla) { document.addEventListener("DOMContentLoaded", dj_load_init, null);}// for Internet Explorer. readyState will not be achieved on init call, but dojo doesn't need it//Tighten up the comments below to allow init after DOMLoad, not after window.onload/ * @cc_on @ * // * @if (@_win32) document.write("<script defer>dj_load_init()<"+"/script>");/ * @end @ * /*/// default for other browsers// potential TODO: apply setTimeout approach for other browsers// that will cause flickering though ( document is loaded and THEN is processed)// maybe show/hide required in this case..// TODO: other browsers may support DOMContentLoaded/defer attribute. Add them to above.dj_addNodeEvtHdlr(window, "load", function(){ // allow multiple calls, only first one will take effect if(arguments.callee.initialized){ return; } arguments.callee.initialized = true; var initFunc = function(){ //perform initialization if(dojo.render.html.ie){ dojo.hostenv.makeWidgets(); } }; if(dojo.hostenv.inFlightCount == 0){ initFunc(); dojo.hostenv.modulesLoaded(); }else{ dojo.addOnLoad(initFunc); }});dj_addNodeEvtHdlr(window, "unload", function(){ dojo.hostenv.unloaded();});dojo.hostenv.makeWidgets = function(){ // you can put searchIds in djConfig and dojo.hostenv at the moment // we should probably eventually move to one or the other var sids = []; if(djConfig.searchIds && djConfig.searchIds.length > 0) { sids = sids.concat(djConfig.searchIds); } if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) { sids = sids.concat(dojo.hostenv.searchIds); } if((djConfig.parseWidgets)||(sids.length > 0)){ if(dojo.evalObjPath("dojo.widget.Parse")){ // we must do this on a delay to avoid: // http://www.shaftek.org/blog/archives/000212.html // IE is such a tremendous peice of shit. var parser = new dojo.xml.Parse(); if(sids.length > 0){ for(var x=0; x<sids.length; x++){ var tmpNode = document.getElementById(sids[x]); if(!tmpNode){ continue; } var frag = parser.parseElement(tmpNode, null, true); dojo.widget.getParser().createComponents(frag); } }else if(djConfig.parseWidgets){ var frag = parser.parseElement(document.getElementsByTagName("body")[0] || document.body, null, true); dojo.widget.getParser().createComponents(frag); } } }}dojo.addOnLoad(function(){ if(!dojo.render.html.ie) { dojo.hostenv.makeWidgets(); }});try { if (dojo.render.html.ie) { document.write('<style>v\:*{ behavior:url(#default#VML); }</style>'); document.write('<xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v"/>'); }} catch (e) { }// stub, over-ridden by debugging code. This will at least keep us from// breaking when it's not includeddojo.hostenv.writeIncludes = function(){}dojo.byId = function(id, doc){ if(id && (typeof id == "string" || id instanceof String)){ if(!doc){ doc = document; } return doc.getElementById(id); } return id; // assume it's a node}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -