Narażanie zmiennych z wywołania PhantomJS na injectJS
Śledziłem przykłady wstrzykiwania jQuery ze strony „Pierwsze kroki” i to działa dobrze. Mam lokalną kopię jQuery w tym samym katalogu i robię coś takiego ...
<code>if(page.injectJs('jquery.min.js')) { page.evaluate(function(){ //Use jQuery or $ } } </code>
Kiedy próbuję wstrzyknąć własny skrypt, żadna z funkcji nie jest dla mnie dostępna. Powiedz, że mam skrypt o nazwie myScript.js, który właśnie ma
<code>function doSomething() { // doing something... } </code>
Nie mogę wtedy użyć czegoś takiego jak ...
<code>if(page.injectJs('myScript.js')) { console.log('myScript injected... I think'); page.evaluate(function() { doSomething(); }); } else { console.log('Failed to inject myScript'); } </code>
próbowałem
<code>window.doSomething = function() {}; </code>
i
<code>document.doSomething = function() {}; </code>
jak również bez powodzenia, a także próbując wywołać je za pomocą window.doSomething () lub document.doSomething () na kolejnej stronie page.evaluate ().