javascript - 有条件地显示元素 : should I createElement or hide the elements?

标签 javascript jquery html

我的网站上有一个部分,我想让用户根据用户是否登录来查看。

我想知道使用 jQuery 有条件地创建/删除元素(甚至动态写入)或者简单地隐藏/显示元素是否更有效。

您会使用哪种最佳实践方法?我完成的 jQuery 教程总是让我添加和删除元素。

此外(我希望我不会因此激怒元神),关于何时应该创建/删除元素以及何时应该显示/隐藏它们的一般准则是什么?

提前致谢!

最佳答案

很久以前,有人建议您永远不要在文档中放置您不使用的元素,并且一旦完成就将其删除。

但是,您必须意识到,这个建议是在浏览器并不总是处理 CSS 并且布局控制非常糟糕的时候提出的。这是一个基于文本的浏览器(例如 lynx)的时代。

现在的世界已经大不相同了,即使是大多数盲人用户也[需要引用] 使用带有屏幕阅读器的功能齐全的浏览器,这些屏幕阅读器足够聪明,可以理解隐藏的元素。

如今,将不敏感的所有内容简单地放在文档和样式表规则或 JavaScript 中以根据需要隐藏、取消隐藏和重新排列要容易得多。

也就是说,敏感 信息应该受到限制。如果不允许最终用户看到某些内容,则不要将其提供给他们,即使是隐藏的。

记住,客户永远不可信。

按评论编辑

假设您的系统有一个敏感字段,我们称之为coolness。酷是普通用户永远看不到的东西,但网络管理员可以设置他们喜欢和不喜欢的人。

如果你简单地说:

<div id="coolness_rating" style="display:none">
   <label>Coolness
     <input name="coolness" value="4">
   </label>
</div>

即使它隐藏在屏幕上,用户仍然可以查看 HTML 标记并看到该值。它很隐蔽,但很容易找到。

尽管如此,后端代码还需要围绕 coolness 值进行保护,这样就无法调整发送的内容并添加它中。

后端代码需要如下所示:

if (loggedInuser.AccessLevel === AccessLevel.Admin) {
    // Only let Admins change the level
    referencedAccount.Coolness =  formData.coolness;
}

关于javascript - 有条件地显示元素 : should I createElement or hide the elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25224737/

相关文章:

javascript - 在 javascript 和 html 中使用变量

javascript - 如果歌剧 - CSS 有什么不同?

javascript - AngularJS 不发送隐藏字段值

javascript - 如何获取多个文本框的值并将它们存储在变量中

JavaScript - for 在 x 轴和 y 轴上循环

javascript - 当用户单击 href "#"的链接时显示 <div>

javascript - 如何防止样式进入div

javascript - 如何递归地将嵌套数组转换为平面数组?

JavaScript 确认何时在表单中选择动态 HTML 字段

javascript - jQuery 显示带有子 iframe 的 div(所见即所得文本编辑器)