2 일 동안 검색했지만 변경 사항이 없습니다. 안에 참조 변수에 의해 변수가 필요하지만 불가능한 것처럼 보입니다. 외부 및 내부 모두PhantomJS 변수를 page.evaluate에 전달하여 참조로
var foo = 42;
setInterval(function(){
console.log('outer '+foo++);
},1000);
page.open(url, function() {
var pe = page.evaluate(function(foo) {
setInterval(function(){
console.log('inner inner '+foo);
},1000);
},foo);
setInterval(function(){
console.log('inner '+foo);
},1000);
}.bind(foo));
업데이트되지만 inner inner
푸 static.I 또한 바인딩 시도되고 있지만,이 오류가 반환
SyntaxError: Expected token ']'
undefined:2 in evaluateJavaScript
phantomjs://platform/webpage.js:390 in evaluate
phantomjs://code/foo.js:37
:0
phantomjs://platform/webpage.js:286 in _onPageOpenFinished
편집 : 그냥 함수가 평가하는 것이 발견입니다 샌드 박스,이 두 가지 사이에 메시지 전달 또는 IPC와 같은 방법이 있다면 궁금합니다.
내 첫 번째 목표는 외부 (sanbox/평가 중)에서 실시간으로 내부로 데이터를 전송하는 것이 었습니다. 이는 불가능합니다. 그러나 ur 대답의 도움으로 나는'interval' 블록 내부에서 전체 평가를 실행할 수 있고 매번 데이터를 보내고받을 수 있다고 생각합니다. – MaMadLord
그건 불가능한 일이 아닙니다 ... 페이지에서 데이터를 변경하기 위해 자신의 이벤트 리스너를 만든 다음'page.callPhantom'을 사용하여 다시 보냅니다. 그렇지만 page.evaluate + setInterval은 신뢰할 수 있습니다. – Vaviloff