JavaScript使用自定义属性作为持久化机制
JavaScript use custom attributes as persistance mechanism
我需要保持我的Html控件的状态(我有一个多选择列表,我需要保持关于所选项目的信息),为此我使用自定义属性,如:
// put
$("#element").attr("selectionState", "value");
// get
alert($("#element").attr("selectionState"));
当它工作时,我想知道这是否是一个安全的方法,如果不是,你会如何解决这个问题?
我能看到的唯一风险是-另一个脚本创建具有相同名称的自定义属性,这是我可以管理的。
我建议用.data()
代替。
$('#element').data('selectionState', 'value');
这绝对更安全,因为它将数据完全保存在JavaScript中,而不是将"属性"映射保存在DOM元素中。由于".data()"都是JavaScript,因此您可以在其中存储任何内容,包括函数和闭包。(我猜你也可以用"。attr()"来做,但这在IE中是相当危险的,至少在旧版本中,对于DOM和JScript内部有完全不同的存储管理。)
您提到的名称空间问题当然是一样的,管理它的可能方法也是一样的。
相关文章:
- REST的面向公众的身份验证机制
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 在post-expressjs之后持久化表单数据
- 在AngularJs中添加轮询机制
- Backbone+RequireJS:使集合持久化
- 使用JavaScript'持久化CSS状态;s的`window.cookie`
- 通过Ajax调用的轮询机制
- 如何使 Angular 服务中的数据通过页面刷新持久化
- Rails Ajax 刷新部分,同时持久化参数
- 如何获得Backbone.js收藏集只存在于内存中(未持久化)
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- 环回中持久化模型之间的继承
- express req.session对象是如何持久化的
- JS URL持久化创建模板
- 是否有javascript机制来修改图像的EXIF元数据信息
- Ember.js没有使用共享模板持久化记录
- 跨Node.js重新启动持久化setTimeout和setInterval
- Javascript AMD模式混淆-持久化属性值
- Ember更新id在服务器上持久化后
- JavaScript使用自定义属性作为持久化机制