gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:19:27 30 4
gpt4 key购买 nike

我有一个 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com