2016-06-17 5 views
0

여러 가지 방법으로 문제를 풀려고했지만 완전히 어려움을 겪었습니다. ...Chrome 콘텐츠 스크립트 '고립 된 세상'에서 knockout.js 관측 정보 업데이트

문제점

나는 그들이이 AJAX를 통해 제출되기 전에 웹 페이지에서 일부 입력 요소의 값을 수정하기 위해 크롬 확장 프로그램을 쓰고 있어요. 요소는 초기 AJAX 요청의 응답을 기반으로 구성된 넉 아웃 모델을 사용하여 만들어집니다. 문제는 내 Chrome 콘텐츠 스크립트가 input 요소의 값을 업데이트 할 때마다 넉 아웃 관측소가 업데이트되지 않으며 최종 POST 요청이 변경되지 않은 직렬화 된 녹아웃 객체를 사용한다는 것입니다. 관찰 직접 넉 아웃을 업데이트 나도 제안 보았다

여러 솔루션,

  1. - 가능하지 내 스크립트 (또는, "고립 된 세계")
  2. 자신의 샌드 박스에서와 같이 값을 업데이트 한 후 요소에서 change 이벤트를 수동으로 트리거하면 이므로은 이것이 정상적으로 작동하기를 바랍니다. 그러나 아무것도하지 않는 것 같습니다. 오늘 두 시간 동안 이걸 가지고 놀아본 후 내 이해는이 이벤트가 이고 또한이 샌드 박스와 분리되어 있다는 것입니다 (하지만 내가 잘못 될 수 있음).

내가 볼 수있는 유일한 해결책은 POST를 차단하고 요청 내용을 직접 수정하는 것입니다. 하지만 그것은 DOM에서 양식을 수정할 수있을 때 너무 어리석은 것 같습니다 ...

아이디어가 있으십니까? 나는 정말로 도움을받을 수있다.

답변

0

나는 그것을 알아 낸 덕분에 this 답변을 얻었습니다. 페이지에 자바 스크립트를 삽입 할 수 있는지 몰랐습니다. 그래서 change 이벤트 트리거를 DOM에 삽입하면 콘텐츠 스크립트 범위 대신 페이지 범위에서 호출됩니다.

var script = document.createElement('script'); 
script.textContent = "$(\'.myInputField\').eq(" + i + ").change()"; 
(document.head || document.documentElement).appendChild(script); 
script.parentNode.removeChild(script); 
관련 문제