有条件地显示元素:我应该创建元素还是隐藏元素?

时间:2014-08-10 01:37:20

标签: javascript jquery html

我的网站上有一个部分,我希望用户可以根据用户是否登录来查看。

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

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

此外(我希望我不要用这个来激怒元神),关于什么时候我应该创建/删除元素以及何时应该显示/隐藏它们的一般指导原则是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

很久以前,有人建议你永远不要在你没有使用的文件上放置元素,并在完成后删除元素。

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

现在世界变得非常不同,甚至大多数盲人用户 [citation needed] 使用成熟的浏览器和屏幕阅读器,这些屏幕阅读器足够聪明,可以理解隐藏的元素。

今天,简单地将文档和样式表规则或JavaScript中的所有非敏感 隐藏起来,取消隐藏并根据需要进行重新排列要容易得多。

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

请记住,永远不会信任客户。

编辑评论

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

如果你只是说:

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

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

继续相同,后端代码还需要围绕coolness值的 guard ,以便有人无法调整发送的内容并将其添加到。< / p>

后端代码需要看起来像这样:

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