如何检查浏览器是否支持元素的HTML5 form属性input?
在这个问题之后,我尝试了以下方法:
var supportForm = function()
{
var input = document.createElement("input");
if ("form" in input)
{
input.setAttribute("form", "12345");
if (input.form == "12345")
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
......但这给FireFox带来了假阴性(至少14).更换input.form用input.getAttribute("form")给出了IE 9的假阳性.
对于输入元素,在HTML5表单引用功能之前有一个对父表单的引用,这会导致您提到的这个问题.
我希望有一种更优雅的方式来检查它是否受支持但是现在你可以使用以下(但它涉及与DOM的交易):
function testInputFormSupport() {
var input = document.createElement('input'),
form = document.createElement('form'),
formId = 'test-input-form-reference-support';
// Id of the remote form
form.id = formId;
// Add form and input to DOM
document.childNodes[0].appendChild(form);
document.childNodes[0].appendChild(input);
// Add reference of form to input
input.setAttribute('form', formId);
// Check if reference exists
var res = !(input.form == null);
// Remove elements
document.childNodes[0].removeChild(form);
document.childNodes[0].removeChild(input);
return res;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |