Browse files

Better way of doing the formattribute test

  • Loading branch information...
1 parent ef85994 commit 1c86fcecf48e7ad42017c4b0e20595426e536a4e @danielchatfield danielchatfield committed Jul 25, 2012
Showing with 25 additions and 26 deletions.
  1. +25 −26 feature-detects/forms-formattribute.js
View
51 feature-detects/forms-formattribute.js
@@ -1,30 +1,29 @@
-
// Detects whether input form="form_id" is available on the platform
// E.g. IE 10 (and below), don't support this
+Modernizr.addTest("formattribute", function() {
+ var form = document.createElement("form"),
+ input = document.createElement("input"),
+ div = document.createElement("div"),
+ id = "formtest"+(new Date().getTime()),
+ attr,
+ bool = false;
+
+ form.id = id;
+
+ //IE6/7 confuses the form idl attribute and the form content attribute
+ if(document.createAttribute){
+ attr = document.createAttribute("form");
+ attr.nodeValue = id;
+ input.setAttributeNode(attr);
+ div.appendChild(form);
+ div.appendChild(input);
+
+ document.documentElement.appendChild(div);
+
+ bool = form.elements.length === 1 && input.form == form;
+
+ div.parentNode.removeChild(div);
+ }
-Modernizr.addTest("formattribute", function(){
- try {
- var form = document.createElement("form"),
- input = document.createElement("input"),
- div = document.createElement("div"),
- id = "formtest",
- bool = false;
-
- form.id = id;
- input.setAttribute("form",id);
-
- div.appendChild(form);
- div.appendChild(input);
-
- document.documentElement.appendChild(div);
-
- bool = form.elements.length === 1;
-
- div.parentNode.removeChild(div);
-
- return bool;
- } catch (e) {
- return false;
- }
-
+ return bool;
});

0 comments on commit 1c86fce

Please sign in to comment.