我的网站上有一个部分,我希望用户可以根据用户是否登录来查看。
我想知道用jQuery有条件地(甚至动态地写)创建/删除元素是否更有效,或者只是隐藏/显示元素。
您将使用哪种最佳练习方法?我完成的jQuery教程总是让我添加和删除元素。
此外(我希望我不要用这个来激怒元神),关于什么时候我应该创建/删除元素以及何时应该显示/隐藏它们的一般指导原则是什么?
提前谢谢!
答案 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;
}