From cde4dd8c601226a5fe77c197342a7aa9652a0d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=9F=E9=85=8C=20=E9=B5=AC=E5=85=84?= Date: Mon, 4 Apr 2016 00:35:59 +0800 Subject: [PATCH] Prevent instance init collision --- botanjs/src/Components/Vim/VimArea.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/botanjs/src/Components/Vim/VimArea.js b/botanjs/src/Components/Vim/VimArea.js index 3614809..767a4ff 100644 --- a/botanjs/src/Components/Vim/VimArea.js +++ b/botanjs/src/Components/Vim/VimArea.js @@ -44,14 +44,25 @@ /* stage @param {Dandelion.IDOMElement} */ var VimArea = function( stage ) { - if( !stage ) return; + if( !stage ) throw new Error( "Invalid argument" ); + + stage = IDOMElement( stage ); var element = stage.element; - if( element.nodeName != "TEXTAREA" ) + if(!( element && element.nodeName == "TEXTAREA" )) { - debug.Error( "Element is not compatible for VimArea" ); - return; + throw new Error( "This element is not compatible for VimArea" ); + } + + for( var i in Insts ) + { + var inst = Insts[ i ]; + if( inst.stage.element == element ) + { + debug.Info( "Instance exists" ); + return inst; + } } stage.setAttribute( new DataKey( "vimarea", 1 ) );