2012-06-24 1 views
2

Как проверить, поддерживает ли браузер атрибут formtarget или form?Как проверить поддержку браузера для атрибутов формы HTML5?

Modernizr здесь не помогает, и я даже не мог найти что-то в Интернете по текущему состоянию поддержки form в браузерах. Хотя быстрый тест показал, что все текущие браузеры, кроме IE 9, поддерживают их.

Так как я могу проверить, поддерживает ли браузер атрибуты form*?

ответ

2

форма атрибут ввода является особый случай. Он использовался до функции HTML5, чтобы ссылаться на родительскую форму, но теперь она также используется как атрибут, поэтому у вас будут ложные срабатывания в IE.

Существует функция проверки, но она включает взаимодействие с 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.body.appendChild(form); 
    document.body.appendChild(input); 
    // Add reference of form to input 
    input.setAttribute('form', formId); 
    // Check if reference exists 
    var res = !(input.form == null); 
    // Remove elements 
    document.body.removeChild(form); 
    document.body.removeChild(input); 
    return res; 
} 
1

Посмотрите this site. Она охватывает все новые функции формы и дает удобную маленькую функцию, чтобы проверить поддержку атрибута

// Function to test for attribute support 
function elSupportsAttr(el, attr) { 
    return attr in document.createElement(el); 
} 
+0

Wufoo не покрывает * все * новые функции формы, по крайней мере 'form' не упоминается. Но тестовая функция работает. –

+1

-1 это не сработает. '' form "в document.createElement (" input ")' возвращает 'true' в IE8 (см. ответ @ Sev по этой причине). '" formaction "в document.createElement (" input ")' и другие возвращают 'false' в любой браузер, который должен его поддерживать. – Stijn

2

Здесь вы идете:

if("formtarget" in document.createElement("input")){ 
    //good job, browser 
}else{ 
    //nope 
} 
+0

-1 В соответствии с этим 'formtarget' не поддерживается в браузерах, которые его поддерживают. – Stijn

+0

@Stijn - Huh ??? –

+0

http://jsfiddle.net/ZXccw/ Выводит «false» в Firefox 23, в то время как он поддерживается с Firefox 4. [Биг Bugzilla] (https://bugzilla.mozilla.org/show_bug.cgi?id=566064) * 2010-08-19 22:20:37 PDT Это сейчас в дереве. * – Stijn

Смежные вопросы