페이지가로드 될 때까지 기다려야합니다. 당신은 뭔가를 요구하고 있습니다 :
document.getItems('http://schema.org/Person')[0]
그것은 아직 DOM의 일부가 아닙니다. DOM이 "아직 보이지 않는"요소를 인식하기 전에 코드가 실행됩니다.
을 사용하면 요소가 구문 분석 된 후 발생하는 onload
이벤트가 발생하기를 기다릴 수 있습니다.
http://jsfiddle.net/eY63s/2/
window.onload = function(){
var user = document.getItems('http://schema.org/Person')[0];
console.log(user);
console.log('user.properties Name: ' + user.properties['name'][0].textContent);
function supports_microdata_api() {
return !!document.getItems;
}
console.log(supports_microdata_api());
};
또는 교대, 페이지 순서에 DOM 요소 후 코드
을 넣어. window.addEventListener('load', function(){
var user = document.getItems('http://schema.org/Person')[0];
console.log(user);
console.log('user.properties Name: ' + user.properties['name'][0].textContent);
function supports_microdata_api() {
return !!document.getItems;
}
console.log(supports_microdata_api());
});
http://jsfiddle.net/eY63s/3/
IE 지원 element.attachEvent
적어도 이전 버전 대신, IE9 or later 브라우저/element.addEventListener
을 지원 않지만 :
더 현대적인 방법은 이벤트 위임을 사용하는 것입니다.
그리고이 방법 확인 및 통화 할 수있는 안전한 방법입니다
window.addEventListener('load', function(){
var user;
function supports_microdata_api() {
return !!document.getItems;
}
console.log('Microdata support: ' + supports_microdata_api());
if (supports_microdata_api()) {
user = document.getItems('http://schema.org/Person')[0];
console.log(user);
console.log('user.properties Name: ' + user.properties['name'][0].textContent);
}
});
http://jsfiddle.net/eY63s/4/
주 클로저를 만들고에 탈출 user
을 방지 익명 함수 내부 var user
의 사용을 글로벌 범위. 이것은 변수를 처리하는 "더 나은"방법으로, 전역 공유로 인해 실수로 덮어 쓰지 않도록 방지 할 수 있습니다. 반면에 해당 범위 외부에서는 user
으로 전화를 걸 수 없습니다. 그렇지만 쉽지는 않을지 몰라도 나쁜 습관이 있으며 때로는 오류를 찾기가 어려울 수 있습니다.
질문을 편집하여 "작동하지 않음"대신 _actual_ 오류 메시지를 추가하면 매우 유용합니다. – Ben
Opera Developer Tools 콘솔을 사용하면 * Uncaught 예외가 발생합니다. TypeError : 'user'를 오브젝트로 변환 할 수 없습니다. 30 행 8 열 *에 오류가 발생했습니다. –
간단한 JS 오류, Microdata와 관련이 없음 –