2012-10-17 20 views
5

Bir tarayıcının, input öğelerinde HTML5 form özniteliğini destekleyip desteklemediğini nasıl kontrol edebilirim?HTML5 desteğini algıla <input form = ""> özniteliği

this question ardından, aşağıdaki denedim:

var supportForm = function() 
{ 
    var input = document.createElement("input"); 
    if ("form" in input) 
    { 
    input.setAttribute("form", "12345"); 

    if (input.form == "12345") 
     return true; 
    } 

    return false; 
} 

... ama bu (en az 14) FireFox için yanlış negatif verir. 'un input.getAttribute("form") ile değiştirilmesi, IE 9 için yanlış bir pozitif verir.

+0

ordinarliy, ben Modernizr öneririm Bu tür bir şey, ama bunun için bir test içermedikleri görülüyor. Ho Hum. – SDC

+0

@SDC - Ben hemfikirdim - her iki sayımda da! – Chowlett

+0

Bir çalışma testi almayı başarırsanız, bunu Modernizr'e katkıda bulunmayı düşünün. :) – SDC

cevap

6

orada HTML5 formu referans özelliği önce ana formuna referans oldu ve bu söz bu soruna neden değiştirmek için belge olmalıdır.

Ben desteklenir ama şimdilik kullanabilirsiniz olmadığını kontrol etmek daha zarif bir yolu yoktur umut (ama DOM ile ilişkileri içerir) Aşağıdaki:

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; 
} 
+0

Umut verici görünüyor - yanıtında @Gaby'nin söylediği şeyle dalga geçiyor. Ben bir adım atacağım ve işe yarayıp yaramadığını söyleyeyim. – Chowlett

+0

İlk testler iyi. Tam bir test yapması gerekiyor (ve IE, documentName [0] .appendChild'i değil, childNodes [0], html etiketidir, ancak bu konuda çalışabiliriz!), Ama kesinlikle şu ana kadar iyi görünüyor. – Chowlett

+0

"childNodes [0]' yerine "body" aldım, yardımcı olabilir. – Sev

0

Bunun kolay olduğunu düşünmüyorum. formu sahibi bulunması gerekir http://dev.w3.org/html5/spec/association-of-controls-and-forms.html#attr-fae-form

  1. de özellikleri göre

    bir elemana ayarlanmalıdır.
  2. eleman girdi elemanları için onun formu sahibine
+0

Aha. Fakat bu ileriye doğru bir yol önermektedir. Belgeye bir form ekleyebilir, daha sonra bir "gizli" girdi ekleyebilir ve o öğenin "form" özelliğini değiştirmeyi deneyebilir miyim? Daha sonra temizlemek mi? – Chowlett

İlgili konular