Я пытаюсь заставить PhantomJS взять строку html, а затем отобразить всю страницу в качестве браузера (включая выполнение любого javascript в источнике страницы). Мне нужен результат html в виде строки. Я видел примеры page.open, которые бесполезны, поскольку у меня уже есть источник страницы в моей базе данных.PhantomJS как визуализировать javascript в html-строке
Нужно ли использовать page.open для запуска механизма рендеринга javascript в PhantomJS? Есть ли все-таки сделать это все в памяти (т. Е. Без страницы.open делать запрос или читать/писать html-источник с/на диск?
Я видел аналогичный вопрос и ответ here, но это не совсем решить мою проблему. После запуска ниже код, я ничего сделать не кажется, чтобы сделать JavaScript в исходной строке HTML.
var page = require('webpage').create();
page.setContent('raw html and javascript in this string', 'http://whatever.com');
//everything i've tried from here on doesn't execute the javascript in the string
-------------- Update ---- -----------
Пробовал следующее на основе приведенного ниже предложения, но это все еще не работает. Просто возвращает исходный источник, который я предоставил без рендеринга javascript.
var page = require('webpage').create();
page.settings.localToRemoteUrlAccessEnabled = true;
page.settings.webSecurityEnabled = false;
page.onLoadFinished = function(){
var resultingHtml = page.evaluate(function() {
return document.documentElement.innerHTML;
});
console.log(resultingHtml);
//console.log(page.content); // this didn't work either
phantom.exit();
};
page.url = input.Url;
page.content = input.RawHtml;
//page.setContent(input.RawHtml, input.Url); //this didn't work either
Какую версию PhantomJS вы используете? Пожалуйста, зарегистрируйтесь в событиях onConsoleMessage, 'onError',' onResourceError', 'onResourceTimeout' ([Пример] (https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file-1_phantomerrors-js)). Возможно, есть ошибки. –