2017-08-25 56 views
0

JS全局变量的值,所以我有一段HTML的,看起来是这样的:在访问HTML与PhantomJS

<html> 
    <body> 
    <script> 
     var foo = { 
     bar: [] 
     }; 
    </script> 
    </body> 
</html> 

,我试图用PhantomJS提取foo.bar的价值。我将如何做到这一点?到目前为止,我知道我会的结构是这样的:

var webPage = require('webpage'); 
var page = webPage.create(); 
page.open(MY_URL, function(status) { 
    var foo = page.evaluate(function(){ 
    //gets javascript from the HTML in the response 
    // and extracts foo from there 
    }); 
}); 

console.log(someVar); 
phantom.exit(); 

回答

0

看来你就应该能够使用

var foo = page.evaluate(function() { 
    return window.foo 
}) 
console.log('foo =', foo) 
+0

我应该可以。但是,有一个问题。虽然我可以运行'window.foo',但是当我键入'console.log(Object.keys(foo));'时,即使'bar'出现,我也无法访问'foo.bar'数组。 – TheLegendOfCode

+0

@TheLegendOfCode在这种情况下,上面的例子看起来很糟糕 – Phil

+0

我将'return window.foo'改为'return JSON.stringify(window.foo)',它表示'foo.bar'完全为空。但是,当我将URL投入谷歌并在控制台中打印foo.bar时,它已满。 – TheLegendOfCode