2009-04-24 3 views
2

OS X Safari (버전 3 및 WebKit)의 기본 코드에 익숙한 사람이 있습니까? 양식의 일부 정보를 구문 분석하기 위해 자바 스크립트를 사용하고 있으며 입력 정보 중 하나는 "태그"라고합니다. 해당 요소의 가치를 얻으려고 할 때 :Safari Native Code

// button is being passed through a function as a DOM object 
var tags = button.form.elements["tags"].value; 

Safari는 어떤 종류의 기능을 반환합니다. "function tags() {[native code]}"및 노드 트리와 같은 값을 경고하도록했으나 왜 문제가 발생하는지 이해할 수 없습니다. 누구나 단서가 있다면 알려주세요. 입력의 이름을 다른 것으로 변경하고 모든 요소를 ​​반복하고 if() 문을 사용하여 내가 원하는 요소인지 판단하지만, 애플이 왜 그렇게 될지 궁금하다. "tags"라는 양식 요소의 사용을 제한하십시오 ...

PS - 테스트 중이며 파이어 폭스에서 잘 작동합니다.

답변

6

[native code]은 자바 스크립트로 작성된 것이 아니라 브라우저에 내장 된 함수라는 것을 의미합니다. tagsappears to be DOM에 대한 WebKit 확장으로 태그 이름을 사용하여 양식의 요소 목록을 가져올 수 있습니다.

document.getElementById('submit-button').form.elements.tags("textarea")[0] 

문제는, 자바 스크립트 모음의 인덱스는 (방법 포함) 개체의 속성에 액세스 것입니다 그래서 당신을 : 나는 StackOverflow의 페이지에서이 작업을 실행하는 경우 예를 들어, 나는 응답 텍스트 영역을 얻을 명명 된 요소 tags에 액세스하려고 시도하면 대신 WebKit에서 정의한 elements 개체의 메서드를 가져옵니다. 다행히도 해결 방법이 있습니다.

var tags = button.form.elements.namedItem("tags").value; 

편집 : 당신이 id 또는 name하여 항목을 얻을 수있는 요소 목록 namedItem를 호출 할 수는 아마 더 나은 경우에 당신이 검색 할 필요도 다른 브라우저에서 일반적으로 namedItem을 사용합니다 요소는 item 또는 length 또는 이와 비슷한 것입니다. 그렇지 않은 경우 [] 연산자로 색인으로 사용하면 요소 대신 기본 제공 방법 item 또는 length이 표시됩니다.

+0

부끄러움처럼 일했습니다. 고마워요! – bloudermilk

+0

흥미 롭습니다. 사파리에서는이 문제가 없었지만 IE9에서이 문제를 만났습니다. 다행히도 동일한 솔루션이 거기에서 작동했습니다. – arlomedia

+0

죄송합니다.이 문제로 함정을 발견했습니다. 체크 박스 나 라디오 버튼과 같은 여러 요소가있는 폼 요소에 액세스하려고 시도하면 namedItem은 Safari의 요소 배열을 반환하지만 IE9 및 Firefox 4의 첫 번째 요소 (체크 한 유일한 버전 지금까지). 따라서 확인란이나 라디오 버튼을 사용하여 작업하는 경우 이는 요소 배열을 반환하는 요소 []에 대한 드롭 인 대체가 아닙니다. – arlomedia

관련 문제