Javascript 对于html数据存储,我需要记住什么兼容性?
根据可以在html标记中存储数据的说法,现在我的Javascript 对于html数据存储,我需要记住什么兼容性?,javascript,html,Javascript,Html,根据可以在html标记中存储数据的说法,现在我的DOCTYPE标题如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 编辑:我的标题的原因是我正在添加到现有的intranet系统中,他们对每个页面都使用相同的标题,这是在HTML5之前(理想情况下,我会使用HTML5) 编辑2:我很清楚我应该使用data-作为属性的前缀,但
DOCTYPE
标题如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
编辑:我的标题的原因是我正在添加到现有的intranet系统中,他们对每个页面都使用相同的标题,这是在HTML5之前(理想情况下,我会使用HTML5)
编辑2:我很清楚我应该使用data-
作为属性的前缀,但是我可以使用console.log(document.getElementById(“myForm”).getAttribute(“输出文件”)
很好,得到正确的结果,我想有人会注意到这一点,并解释可能存在的跨/向后兼容性问题为什么要使用过渡文档类型?为什么不严格
总之,要回答您的问题,您可以使用HTML存储,但您应该掌握正确的语法:
<form name="myForm" id="myForm" data-output-file="export.log">
这是一篇优秀的文章:编辑
data-*
属性的使用在所有现代浏览器中都得到了很好的支持,甚至可以追溯到IE。您不会遇到任何兼容性问题
要回答另一个问题,请使用数据-*
前缀:
- 在以后添加新的html属性时不会遇到任何问题。
标准为此专门留出了HTML5
名称空间data-*
- 到时候,您将能够使用它,而不是hacky
和setAttribute
getAttribute
- 这种方法可以追溯到IE6李>
- 如果不使用数据前缀,则可能会与稍后出现的新HTML5属性发生冲突
console.log(document.getElementById(“myForm”).getAttribute(“output file”)
输出我所期望的内容,而您的链接只讨论HTML5,除非我所做的只是严格意义上的HTML5(因此我的DOCTYPE被忽略)我知道使用数据-
是正确的,但是你的问题没有解释忽略数据-
前缀会导致什么问题,这又回到了我的问题,即我应该记住什么样的交叉/向后兼容性(例如,没有数据-
前缀会使其在IE6上无效)@Memor-X,如果你有数据-
前缀,使其在HTML5中有效,在所有以前版本的HTML中无效。如果你没有数据-
前缀,使其在所有版本的HTML(包括5)中无效。但是浏览器是宽松的,不会打扰到他们;这是未来的兼容性,你将使用数据获取-
-使用HTML4.01过渡版
会让你感到交叉/向后兼容性的头疼,因为它会让现代浏览器进入怪癖模式。
<form name="myForm" id="myForm" data-output-file="export.log">
var el = document.getElementById("myForm");
var filename = el.getAttribute("data-output-file");
el.setAttribute("data-output-file", "newName");