我試圖讓PhantomJS接受一個html字符串,然後讓它呈現整個頁面作爲瀏覽器(包括在頁面源代碼中執行任何javascript)。我需要得到的html結果作爲字符串。我已經看過page.open的例子,因爲我已經在我的數據庫中擁有頁面源代碼,所以它是沒有用的。PhantomJS如何在html字符串中呈現javascript
我是否需要使用page.open來觸發PhantomJS中的JavaScript渲染引擎?是否有無論如何做到這一切在內存中(即..沒有page.open做出請求或從磁盤讀取/寫入html源碼?
我已經看到了類似的問題和答案here但它並不完全解決我的問題。運行下面的代碼後,我什麼都不做,似乎呈現HTML源字符串中的JavaScript。
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
--------------更新---- -----------
根據下面的建議嘗試了以下內容,但這仍然無效。只返回我提供的未提供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事件([Example](https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file-1_phantomerrors-js))。也許有錯誤。 –