From aa76fffaf2b74a6d7787d94ae7774bbcb0c1d02c Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 5 Oct 2013 14:00:15 +0400 Subject: [PATCH] fix __defineGetter__ errors on ie --- demo/kitchen-sink/demo.js | 32 +++++++++++++++++++++++++------- lib/ace/keyboard/hash_handler.js | 2 +- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/demo/kitchen-sink/demo.js b/demo/kitchen-sink/demo.js index d565bd81..45d28b74 100644 --- a/demo/kitchen-sink/demo.js +++ b/demo/kitchen-sink/demo.js @@ -617,11 +617,29 @@ env.editor.setOptions({ }); // allow easy access to ace in console, but not in ace code which uses strict -function isNonStrict() { - try { return !!arguments.callee.caller.caller } - catch(e){ return false } +void function() { +function isStrict() { + try { return !arguments.callee.caller.caller.caller} + catch(e){ return true } } -window.__defineGetter__("ace", function(){ return isNonStrict() && env.editor }); -window.__defineGetter__("editor", function(){ return isNonStrict() && env.editor }); -window.__defineGetter__("session", function(){ return isNonStrict() && env.editor.session }); -window.__defineGetter__("split", function(){ return isNonStrict() && env.split }); +function warn() { + if (isStrict()) { + console.error("trying to access to global variable"); + } +} +function def(o, key, get) { + Object.defineProperty(o, key, { + configurable: true, + get: get, + set: function(val) { + delete o[key]; + o[key] = val; + } + }); +} +def(window, "ace", function(){ warn(); return env.editor }); +def(window, "editor", function(){ warn(); return env.editor }); +def(window, "session", function(){ warn(); return env.editor.session }); +def(window, "split", function(){ warn(); return env.split }); + +}(); \ No newline at end of file diff --git a/lib/ace/keyboard/hash_handler.js b/lib/ace/keyboard/hash_handler.js index 91bbe676..baa88158 100644 --- a/lib/ace/keyboard/hash_handler.js +++ b/lib/ace/keyboard/hash_handler.js @@ -57,7 +57,7 @@ function HashHandler(config, platform) { return this.commandKeyBinding = val; }); } else { - this.commmandKeyBinding = commandKeyBinding; + this.commmandKeyBinding = this.commandKeyBinding; } this.addCommands(config);