2013-11-26 2 views
0

Google Play 스토어의 콘텐츠 스크립트에서 history.js를 사용했지만 상태가 변경 될 때 함수가 실행되지 않습니다. 매니페스트에서 어댑터 바인딩 방법 을 시도했습니다.History.js가 콘텐츠 스크립트에서 작동하지 않습니다.

"js": [ 
     "js/jquery/jquery.js", 
     "js/jquery.knob.js", 
     "js/jquery.history.js", 
     "src/inject/inject.js" 
     ] 

다음 콘텐츠 스크립트에

History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate 
    var State = History.getState(); // Note: We are using History.getState() instead of event.state 
    alert(); 
}); 

잘 아무것도

을 발생하지 않으며 또한이 솔루션은 EIT 작동하지 않습니다 그녀의 나는이 콘텐츠 스크립트

답변

0

문제를 실행하는 범위와 함께 할 수있는 뭔가가 있다고 생각

(function(history){ 
    var pushState = history.pushState; 
    history.pushState = function(state) { 
     if (typeof history.onpushstate == "function") { 
      history.onpushstate({state: state}); 
     } 
     // ... whatever else you want to do 
     // maybe call onhashchange e.handler 
     return pushState.apply(history, arguments); 
    } 
})(window.history); 


history.onpushstate=function(){alert()} 

는 윈도우 객체 그러므로이 문제를 일으키는 콘텐츠 스크립트 페이지에 대해 다른입니다 . 나는 date.js를 chrome의 콘텐츠 스크립트에서 사용하는 방법을 찾을 수 없을 때까지 가지고있다. 돌연변이 관찰자를 사용하여 문제를 해결하기 위해 DOM 하위 트리 변경 사항을 확인했습니다.

관련 문제