Ie9 ext tree 실효

나는 많은 인터넷에서 ie9exttree를 실현하는 방법을 보았다. 모두 렌더링 모드를 통해 ie8 또는 더 낮은 브라우저로 하는 것이다. 그 실현된 코드는 모두 메타 태그()를 추가하는 것이다. 이렇게 하면 ie9에서 패널 이벤트가 효력을 잃는 문제를 해결할 수 있지만 이것은 최종적인 해결 방법이 아니다. 하루의 디버깅 연구를 통해 나는 ext-all을 수정했다.js의 코드, 그리고 한 걸음 한 걸음 디버깅을 통해 ie9의 이 문제를 해결했습니다...다음은 내가 어디가 틀렸는지, 구체적으로 어떻게 고쳤는지, 앞으로 우리는 무엇을 주의해야 하는지 상세하게 말하겠다.
1. 뭐가 틀렸어:
a) ext-all을 얻는다.js의 미압축판, 나는 ext-all을 얻었다.js의 압축판, 그리고 js를 통해 미화하여 뚜렷한 버전을 얻을 수 있습니다. 압축 해제 주소는 (http://app.baidu.com/webkits)b) 그리고 해당하는 코드 블록 getAttributenS 속성에 대응하는 함수 속성에 대응하는 함수를 찾습니다. 코드는 다음과 같습니다.
getAttributeNS: Ext.isIE ?
		function(ns, name) {
			var d = this.dom;
			var type = typeof d[ns + ":" + name];
			if (type != "undefined" && type != "unknown") {
				return d[ns + ":" + name]
			}
			return d[name]
		}: function(ns, name) {
			var d = this.dom;
			return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name) || d.getAttribute(name) || d[name]
		}
(c) 우선 이 방법의 역할은 다음과 같다.
이름공간 URI 및 이름을 사용하여 속성 값을 가져옵니다.
매개 변수
묘사
ns
반드시속성 값을 가져오는 네임스페이스 URI를 지정합니다.
name
반드시에서 속성 값을 얻는 속성을 규정합니다.
(d) 이 코드가 i9에서 속성을 취하는 것은 잘못된 방법입니다.이 값은 수조의 행식을 통해 추출한 값이null 형식입니다.
2. 어떻게 고칠까:
수조의 값 추출 방식을 attribute 형식을 통해 가져오는 것으로 변경합니다.코드는 다음과 같다. (다른 유형을 호환하기 위해 조작 속성에 대해 아직 잘 이해하지 못했기 때문에 안전한 방법으로 원래의 코드를 수정하지 않고 뒤에 코드를 추가한다.)
getAttributeNS: Ext.isIE?
			function(ns, name) {
				var d = this.dom;
				var type = typeof d[ns + ":" + name];
				if (type != "undefined" && type != "unknown") {
					return d[ns + ":" + name]
				}
				type = typeof d[name];
				if(type != "undefined" && type != "unknown")
				{
					return d[name];
				}
				type=typeof d.getAttribute(ns + ":" + name);
				if(type != "undefined" && type != "unknown")
				{
					return d.getAttribute(ns + ":" + name);
				}
				type=typeof d.getAttribute(name);
				if(type != "undefined" && type != "unknown")
				{
					return d.getAttribute(name);
				}
				return null;
		}: function(ns, name) {
			var d = this.dom;
			return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name) || d.getAttribute(name) || d[name]
		}

나는 단지 그 뒤에 몇 번의 판단을 더 추가했을 뿐이다. 만약에 걷는 방법이 체내의 리턴이 없다면 아래로 실행할 것이다. 이렇게 하면 ext의 다른 영향에 영향을 주지 않을 수 있다.
3. 앞으로 무엇을 주의해야 하는가:
이 exttree의 ie9bug는dom 속성의 값을 찾을 때 오류를 보고했습니다. 그래서 앞으로 어떤 속성을 가져올지, getAttribute, 어떤 속성을 수조 형식으로 가져올지, 어떤 브라우저에서 어떤 값을 가져올지, 모두 주의해야 합니다. 현재 저는 아직 값 추출 방식에 대해 철저하게 연구하지 않았습니다. 다음 블로그에서 어떻게 jsdom 대상 속성 값을 하는지 상세하게 소개할 것입니다. 많은 의견을 보내주시기 바랍니다.
만약에 지금까지 ie9의 exttree 버그가 해결되지 않았다면 직접 메시지를 남기거나 메일로 보내주세요[email protected]연락...혹은 어떤 건의와 문제가 있으면 나에게 직접 제기할 수 있다.가르쳐 주셔서 감사합니다..

좋은 웹페이지 즐겨찾기