2013-08-09 4 views
6

나는 가능한 한 내 문제를 단순화했습니다. Internet Explorer에서만 발생합니다 (9 및 10). 데이터는 무사 initChild 방법에 도착,IE 10 + KnockoutJS = HierarchyRequestError?

<html> 
<body> 

    <span data-bind="text:$data[0].Mileage"></span> 
    <script type="text/javascript"> 
     window.initChild = function (ko, viewModel) { 
      window.ko = ko; 
      ko.applyBindings(viewModel, document.body); 
     } 
    </script> 
</body> 
</html> 

내 SPA가

var otherWindow = window.open('myurl', '_blank'); 
    var handler = function() { 
     otherWindow.initChild(ko, report); 
    }; 
    if (otherWindow.addEventListener) { 
     otherWindow.addEventListener('load', handler, false); 
    } else if (otherWindow.attachEvent) { 
     otherWindow.attachEvent('onload', handler); 
    } 

내가 확인

를 호출 :이와 렌더링 된 페이지가 있습니다.

페이지에 아무 것도 바인딩하지 않으면 applyBindings 호출에서 HierarchyRequestError이 표시됩니다. 나의 google-fu는 이것에 완전하게 버렸다, 나는 틀린 무엇이 완전하게 우둔이다.

+0

태그가 지정된 IE입니다. 다른 브라우저에서도 이러한 현상이 발생하지 않습니까? – Amy

+0

아니요, 그렇지 않습니다. 이 코드는 FF와 Chrome에서 잘 작동합니다 (원래의 더 복잡한 코드). – TDaver

+0

'$ data [0] .Mileage' 뷰 모델이 배열이 아닌 것 같습니다. – Tyrsius

답변

3

지금까지 내가, 그것은이 문제의 증상 없었다 말할 수 : 나는 자식 창에 열중하고 있었다무언가를 코 객체를 전달하고, 내가 시도 할 때 적용 방법에 상관없이 기본적으로 Using Javascript objects across separate windows in IE

, bindings, ko 자체는 DOM 추적 오류를 일으키고, 어딘가에 (아마도 부모 DOM과 자식 DOM의 일부) 삽입해서는 안된다.

솔루션이었다 두 배 :

  • 는 JSON에 ko.mapping와 모델을 직렬화 자신의 코 객체
  • 입니다 가지고, 자식 창에 KO (및 ko.mapping) 스크립트를 추가 , 문자열을 자식 창에 전달하고이를 deserialize하십시오. 사람이 이런 일이 된 이유에 대한 실제적인 설명과 함께 올 수 있다면, 대신 그의 대답을 받아 들일 수 있습니다

끔찍한 행동, IE ....