2012-06-24 4 views
2

브라우저가 formtarget 또는 form 속성을 지원하는지 어떻게 확인할 수 있습니까?HTML5 양식 속성에 대한 브라우저 지원을 확인하는 방법은 무엇입니까?

Modernizr는 여기서 도움이되지 않으며 브라우저의 현재 상태 인 form에 대한 웹에서도 찾을 수 없습니다. 빠른 테스트가 IE 9를 제외한 현재의 모든 브라우저를 지원한다고 밝혀졌습니다.

브라우저가 form* 속성을 처리하는지 어떻게 확인할 수 있습니까?

답변

2

입력형태 속성이있다 특별한 경우. 상위 양식을 참조하기 위해 HTML5 기능보다 먼저 사용되었지만 이제는 속성으로도 사용되므로 IE에서 오탐 (false positive)이 발생합니다.

확인 기능이 있지만 성능에 영향을 줄 수있는 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

에서

if ("attribute" in document.createElement("tag")) 

을보십시오. 그것은 모든 새로운 형태의 기능을 설명하고 여기에

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

Wufoo는 * 모든 새 양식 기능을 다루지는 않습니다. 적어도 "양식"은 언급되지 않았습니다. 하지만 테스트 기능이 작동합니다. –

+1

-1이 작동하지 않습니다. IE6에서 document.createElement ("input")''form "은'true'를 반환합니다 (이유에 대한 @ 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/ Firefox 23에서 'false'를 출력하고 Firefox 4 이후에는 'false'를 출력합니다. [Bugzilla ticket] (https://bugzilla.mozilla.org/show_bug.cgi?id=566064)) * 2010-08-19 22:20:37 PDT 이것은 지금 나무에있다. * – Stijn

관련 문제