diff --git a/UI/ActionManager.js b/UI/ActionManager.js index 406bdb3..5354937 100644 --- a/UI/ActionManager.js +++ b/UI/ActionManager.js @@ -64,6 +64,13 @@ */ jsOMS.UI.ActionManager.prototype.bindElement = function (e) { + if (!jsOMS.isValidJson(e.getAttribute('data-action'))) { + jsOMS.Log.Logger.instance.error('Invalid json string: \'' + e.getAttribute('data-action') + '\''); + + return; + } + + // todo: validate json, if invalid log error const listeners = JSON.parse(e.getAttribute('data-action')), listenerLength = listeners.length, self = this; diff --git a/Utils/StringUtils.js b/Utils/StringUtils.js index 0bb89ac..170a6f1 100644 --- a/Utils/StringUtils.js +++ b/Utils/StringUtils.js @@ -63,6 +63,25 @@ return str.replace(new RegExp("^[" + char + "]*"), ''); }; + /** + * Validate json string + * + * @param {string} jsonString String to validate + * + * @function + * + * @since 1.0.0 + */ + jsOMS.isValidJson = function (jsonString) + { + try { + JSON.parse(jsonString); + } catch (e) { + return false; + } + return true; + }; + /** * Count string in string * diff --git a/Utils/oLib.js b/Utils/oLib.js index adb5f20..5a76141 100644 --- a/Utils/oLib.js +++ b/Utils/oLib.js @@ -390,6 +390,25 @@ } }; + /** + * Validate json string + * + * @param {string} jsonString String to validate + * + * @function + * + * @since 1.0.0 + */ + jsOMS.isValidJson = function (jsonString) + { + try { + JSON.parse(jsonString); + } catch (e) { + return false; + } + return true; + }; + /** * Merging two arrays recursively *