📄 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*/dojo.provide("dojo.storage.browser");dojo.require("dojo.storage");dojo.require("dojo.flash");dojo.require("dojo.json");dojo.require("dojo.uri.*");dojo.storage.browser.FileStorageProvider = function () {};dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage);dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys";dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj";dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () { if (djConfig["disableFileStorage"] == true) { return; } this._loadKeyIndex(); this.initialized = true; dojo.storage.manager.loaded();}, isAvailable:function () { this._available = false; var protocol = window.location.protocol; if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) { this._available = this._isAvailableXPCOM(); if (this._available == false) { this._available = this._isAvailableActiveX(); } } return this._available;}, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; try { this._save(key, value); resultsHandler.call(null, dojo.storage.SUCCESS, key); } catch (e) { this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString()); }}, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var results = this._load(key); return results;}, getKeys:function () { return this._keyIndex;}, hasKey:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); var exists = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { exists = true; } } return exists;}, clear:function () { this._loadKeyIndex(); var keyIndex = new Array(); for (var i = 0; i < this._keyIndex.length; i++) { keyIndex[keyIndex.length] = new String(this._keyIndex[i]); } for (var i = 0; i < keyIndex.length; i++) { this.remove(keyIndex[i]); }}, remove:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { this._keyIndex.splice(i, 1); break; } } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false); var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._removeXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { this._removeActiveX(fullPath); } }}, isPermanent:function () { return true;}, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT;}, hasSettingsUI:function () { return false;}, showSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface");}, hideSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface");}, getType:function () { return "dojo.storage.browser.FileStorageProvider";}, _save:function (key, value, updateKeyIndex) { if (typeof updateKeyIndex == "undefined") { updateKeyIndex = true; } if (dojo.lang.isString(value) == false) { value = dojo.json.serialize(value); value = "/* JavaScript */\n" + value + "\n\n"; } var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._saveFileXPCOM(fullPath, value); } else { if (this._isAvailableActiveX()) { this._saveFileActiveX(fullPath, value); } } if (updateKeyIndex) { this._updateKeyIndex(key); }}, _load:function (key) { var fullPath = this._getPagePath() + key + ".txt"; var results = null; if (this._isAvailableXPCOM()) { results = this._loadFileXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { results = this._loadFileActiveX(fullPath); } else { if (this._isAvailableJava()) { results = this._loadFileJava(fullPath); } } } if (results == null) { return null; } if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) { results = dojo.json.evalJson(results); } return results;}, _updateKeyIndex:function (key) { this._loadKeyIndex(); var alreadyAdded = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { alreadyAdded = true; break; } } if (alreadyAdded == false) { this._keyIndex[this._keyIndex.length] = key; } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false);}, _loadKeyIndex:function () { var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME); if (indexContents == null) { this._keyIndex = new Array(); } else { this._keyIndex = indexContents; }}, _saveFileXPCOM:function (filename, value) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); ouputStream.init(f, 32 | 4 | 8, 256 + 128, null); ouputStream.write(value, value.length); ouputStream.close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg); }}, _loadFileXPCOM:function (filename) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); if (f.exists() == false) { return null; } var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); inp.init(f, 1, 4, null); var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); inputStream.init(inp); var results = inputStream.read(inputStream.available()); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg); } return null;}, _saveFileActiveX:function (filename, value) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); var f = fileSystem.OpenTextFile(filename, 2, true); f.Write(value); f.Close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg); }}, _loadFileActiveX:function (filename) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); if (fileSystem.FileExists(filename) == false) { return null; } var f = fileSystem.OpenTextFile(filename, 1); var results = f.ReadAll(); f.Close(); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg); }}, _saveFileJava:function (filename, value) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); applet.save(filename, value); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg); }}, _loadFileJava:function (filename) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); var results = applet.load(filename); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg); }}, _isAvailableActiveX:function () { try { if (window.ActiveXObject) { var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject"); return true; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -