javascript - 如何检查 Javascript 中的变量是否在另一个 Javascript 文件中定义,如果没有则显示警报?

标签 javascript

我有一个 JavaScript 框架,可以让一些 HTML5 元素在旧版浏览器中工作并让用户创建自己的元素。用户创建自己的元素的函数用在另一个Javascript文件上,例如:

element('myElement').appendStyleColor('red').type('text');

为了确保用户使用我的框架创建元素,我创建了一个用户在文件末尾定义的变量。例如:

using = "myFramework";

如果变量“using”没有值“myFramework”,我必须创建一个测试来显示警报,但我无法让测试工作,因为如果测试进行,它只会在myFramework.js 文件,而不是像 script.js 文件或 application.js 文件一样位于用户的 JavaScript 文件中。

我的代码如下:

if (using !== "myFramework") {
     alert("The value 'myFramework' is not defined in the 'using' variable.")   
}

P.S:我的框架不是框架的真实名称。

** 我不想使用 jQuery **

最佳答案

For making sure the user is creating the element with my framework, I've created a variable that the user defines at the end of their file.

使用全局 using 变量是监视元素是否是使用您的框架创建的糟糕方法。它非常不可靠,并且增加了客户端代码的复杂性。即使定义了 using 变量,也没有任何信息告诉您他们确实使用了 element 函数来操作其元素。此外,用额外的全局变量污染全局命名空间是一种非常糟糕的做法。

无论如何,我不确定为什么拥有这些知识有任何意义,但您可以简单地在元素本身上设置一个属性,它曾经传递给/由元素创建功能。

为了简单起见,假设您有一个 element 函数,它接受 tagName 作为参数并返回元素的包装版本。

例如

var element = (function () {
    var elCount = 0;

    function element(tagName) {
        return new ElementWrapper(document.createElement(tagName));
    }

    function ElementWrapper(el) {
        this.el = el;
        this.el.setAttribute('data-my-framework', ++elCount);
    }

    return element;

})();

这意味着您可以使用 someDOMEl.hasAttribute('data-my-framework') 来了解该元素是否是使用 element 函数创建的。显然,客户端代码始终可以删除该属性,但您无能为力。

console.log(element('div').el.getAttribute('data-my-framework')); //1

关于javascript - 如何检查 Javascript 中的变量是否在另一个 Javascript 文件中定义,如果没有则显示警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966690/

相关文章:

javascript - 获取 elementid 值以切换菜单

javascript - 事件处理程序、事件队列和异步行为

javascript - 如何重置此变量?

javascript - 在 Angular 模板 HTML 中使用 css 变量?

javascript - 找到控件的parent(),然后找到 ("a") JQuery

javascript - 双击提交一次

javascript - window.focus(), self.focus() 在 firefox 中不起作用

javascript - jquery 简化了 onclick 事件的选择

javascript - 将 setAttribute react 到 .map 数组中的特定元素

javascript - 无法理解为什么状态内的单个数组不起作用