johntitus/node-horseman
View on GitHubAdd support for polyfilling missing PhantomJS JavaScript features
Open
#230 opened on Oct 27, 2016
enhancementhelp wanted
Description
PhantomJS does not support some features that websites expect it to. It would be nice for horseman to have built-in support for polyfilling these features.
Here is a way I came up with for polyfilling externally with Polyfill.io, for reference. It is somewhat gross, so if someone comes up with a better way that's great.
var Horseman = require('node-horseman');
var POLYURL = 'https://cdn.polyfill.io/v2/polyfill.min.js';
var horseman = new Horseman();
horseman
.userAgent()
.then(function(useragent) { // Get Polyfill based on real UserAgent
return this.download(POLYURL + '?ua=' + useragent);
})
.then(function(polyfill) {
// Make polyfill into function
var polyfun = new Function(polyfill);
// Wrap function in evaluateJavaScript
var onInit = new Function(
'console.log("onInitialized");' +
'page.evaluateJavaScript(' + polyfun.toString() + ')'
);
// Call before page loads
return this.at('initialized', onInit);
})
/* Do horseman stuff now */
Assistance/contribution would be greatly appreciated.