Где я могу видеть вывод Javascript отладки, когда wkhtmltopdf работает в режиме отладки (--debug-JavaScript)Отладка Javascript в wkhtmltopdf
ответ
Другим (я бы сказал, самым простым) средством отладки javascript в WKHTMLTOPDF является загрузка QT Browser, основного браузера, используемого WKHTMLTOPDF, и проверка выполнения javascript для вашей страницы из браузера.
Вы можете скачать его из here
Инструкции по отладке JavaScript в QT here
Вы можете в основном отладки JavaScript в браузере QT так же, как в Chrome или Firefox.
Отличный ответ. Я просто сделал это и обнаружил, что у меня была синтаксическая ошибка в моем Javascript, который не был взят Chrome или Firefox. У меня был объектный литерал, который не использовал ключевое слово function. то есть 'var myObj = {foo (bar, baz) {/ * код функции здесь * /}}', который должен был быть здесь: var myObj = {foo: function (bar, baz) {/ * здесь код функции * /} } 'Браузер QtWeb бросил это для меня, чтобы легко видеть в консоли. – kohloth
@kohloth Рад, что я мог помочь! –
Да! Это сработало! –
Rendering test.html
<!DOCTYPE html>
<html>
<head></head>
<body>
BODY
<script>
console.log('Hi!');
</script>
</body>
</html>
как это
wkhtmltopdf test.html test.pdf --debug-javascript
должен вернуть что-то вроде этого
Loading pages (1/5)
Warning: :0 Hi!
Resolving links (2/5)
Counting pages (3/5)
Printing pages (5/5)
Done
Хотя ответ Daffy Punks правильный, у меня появилась дополнительная идея несколько недель назад, что мне очень помогло. Это я хочу поделиться: Покажи в PDF
При визуализации макета для PDF я поставил дополнительный (скрытый) DIV #pdf_errors
И очень рано в источнике - если #pdf_errors
здесь - я позволяю точка вывода консоли для заполнения этот div, и по ошибке - я показываю его. Это не отладка, но, по крайней мере, я вижу, что происходит не так.
Источник в CoffeeScript, мои простые JavaScript времена давно прошли ...
if ($pdf=$("#pdf_is_here")).length
for type in ["log","warn","error"]
do (type) =>
console[type]= (a...) =>
$pdf.append("<div class='#{type}'>#{s}</div>") for s in a
window.onerror= (messageOrEvent, source, lineno, colno, error) =>
$pdf.append("<div class='critical'>#{messageOrEvent}</div>")
$pdf.show()
$pdf.hide() # just in case css is not here
Вы используете это в терминале командной строки /? Он должен распечатываться при выполнении wkhtmltopdf. Имейте в виду, что это только распечатка зарегистрированных событий, а не все, что делает javascript. Кроме того, если вы используете переключатель '--quiet', он не будет распечатывать информацию об отладке. – matth