이 코드는 유지 보수 중이었던 코드에서 발견되었습니다 (예 : 7과 8). 생성자를 통해 진행하면서 모든 코드가 올바르게 실행되고 있음을 알 수있었습니다. 그러나 생성자가 반환 될 때 "개체가이 속성 또는 메서드를 지원하지 않습니다."오류가 발생합니다. WTF?IE7 및 IE8 명명 및 범위 지정 충돌
변수 중 하나 인 embedDialog에는 전역 범위가 있습니다 (전역 변수는 악의적 인 것으로 알고 있지만이 코드는 작성하지 않았습니다). 내가 embedDialog에게 기능 범위를 제공하는 경우
// Results in "Object does not support this property or method in ie8 and ie7
embedDialog = new Dialog({
id: "embedDialog",
width: 400,
height: 400,
message: "Check it out",
title: 'Cool dialog box'
});
후 짜잔 그것은 작동 :
// Eliminate global scope and it works
var embedDialog = new Dialog({
id: "embedDialog",
width: 400,
height: 400,
message: "Check it out",
title: 'Cool dialog box'
});
를 해결하는 다른 방법은 변수의 이름 이외의 다른 ID 속성 값을 변경하는 것입니다 다음과 같이하십시오 :
// Change "embedDialog" to "embedDialogBox" and voila it works
embedDialog = new Dialog({
id: "embedDialogBox",
width: 400,
height: 400,
message: "Check it out",
title: 'Cool dialog box'
});
IE에는 어떤 문제가 있습니까? 누구든지 원래 코드가 IE 7/8을 깨뜨린 이유를 설명 할 수 있습니까?
대화 상자는 어떻게 정의됩니까? –
Dialog는 제공된 id로 DOM 요소를 추가 한 다음 jQuery UI 대화 상자를 첨부합니다. Dialog는 상자를 여는 데 사용되는 show를 포함하여 많은 함수를 반환합니다. – Adam