检测对HTML5 <input form ="">属性的支持

Cho*_*ett 5 javascript html5

如何检查浏览器是否支持元素的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.forminput.getAttribute("form")给出了IE 9的假阳性.

Sev*_*Sev 6

对于输入元素,在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)