From e3d696acf6401bb0a2ab1418cbc4d832e5fd571e Mon Sep 17 00:00:00 2001 From: Davy Van Laere Date: Tue, 23 Feb 2016 17:18:39 +0100 Subject: [PATCH 1/3] Allow usage in pure JS scenarios --- rangyinputs-jquery-src.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/rangyinputs-jquery-src.js b/rangyinputs-jquery-src.js index 5b15f65..7bad2df 100644 --- a/rangyinputs-jquery-src.js +++ b/rangyinputs-jquery-src.js @@ -18,6 +18,7 @@ var UNDEF = "undefined"; var getSelection, setSelection, deleteSelectedText, deleteText, insertText; var replaceSelectedText, surroundSelectedText, extractSelectedText, collapseSelection; + var isPlainJsMode = $ === undefined; // Trio of isHost* functions taken from Peter Michaux's article: // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting @@ -66,7 +67,18 @@ return isHostObject(document, "body") ? document.body : document.getElementsByTagName("body")[0]; } - $(document).ready(function() { + var bindDocumentLoadedEvent = isPlainJsMode + ? function (handler) { + if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', handler); + } + else { + document.attachEvent('onload', handler, false); + } + } + : $(document).ready; + + bindDocumentLoadedEvent(function() { var testTextArea = document.createElement("textarea"); getBody().appendChild(testTextArea); @@ -302,7 +314,7 @@ }; } - $.fn.extend({ + var rangyMethods = { getSelection: jQuerify(getSelection, false), setSelection: jQuerify(setSelection, true), collapseSelection: jQuerify(collapseSelection, true), @@ -312,6 +324,13 @@ insertText: jQuerify(insertText, true), replaceSelectedText: jQuerify(replaceSelectedText, true), surroundSelectedText: jQuerify(surroundSelectedText, true) - }); + }; + + if (isPlainJsMode) { + window.RangyInputs = rangyMethods; + } + else { + $.fn.extend(rangyMethods); + } }); -})(jQuery); \ No newline at end of file +})(window.jQuery); \ No newline at end of file From e8dddee7203ef46cd742875c32f619fe25db010d Mon Sep 17 00:00:00 2001 From: Davy Van Laere Date: Tue, 23 Feb 2016 17:56:59 +0100 Subject: [PATCH 2/3] Added demo page + fixes --- demo/demo-plain-js.html | 134 ++++++++++++++++++++++++++++++++++++++ demo/demo.html | 2 +- rangyinputs-jquery-src.js | 36 ++++++---- 3 files changed, 157 insertions(+), 15 deletions(-) create mode 100644 demo/demo-plain-js.html diff --git a/demo/demo-plain-js.html b/demo/demo-plain-js.html new file mode 100644 index 0000000..837f8d4 --- /dev/null +++ b/demo/demo-plain-js.html @@ -0,0 +1,134 @@ + + + + Rangyinputs plain JS plugin demo + + + + + + +

Rangyinputs plain JS plugin Demo

+ +

+ +

+ + + + +
+ + + + +
+ Select/delete text from to + + + +
+ Selection: to +
+ +

+ + \ No newline at end of file diff --git a/demo/demo.html b/demo/demo.html index 9d9f3a9..34247d5 100644 --- a/demo/demo.html +++ b/demo/demo.html @@ -3,7 +3,7 @@ Rangyinputs jQuery plugin demo - +