2013-06-17 4 views
13

Где я могу видеть вывод Javascript отладки, когда wkhtmltopdf работает в режиме отладки (--debug-JavaScript)Отладка Javascript в wkhtmltopdf

+1

Вы используете это в терминале командной строки /? Он должен распечатываться при выполнении wkhtmltopdf. Имейте в виду, что это только распечатка зарегистрированных событий, а не все, что делает javascript. Кроме того, если вы используете переключатель '--quiet', он не будет распечатывать информацию об отладке. – matth

ответ

18

Другим (я бы сказал, самым простым) средством отладки javascript в WKHTMLTOPDF является загрузка QT Browser, основного браузера, используемого WKHTMLTOPDF, и проверка выполнения javascript для вашей страницы из браузера.

Вы можете скачать его из here

Инструкции по отладке JavaScript в QT here

Вы можете в основном отладки JavaScript в браузере QT так же, как в Chrome или Firefox.

+1

Отличный ответ. Я просто сделал это и обнаружил, что у меня была синтаксическая ошибка в моем Javascript, который не был взят Chrome или Firefox. У меня был объектный литерал, который не использовал ключевое слово function. то есть 'var myObj = {foo (bar, baz) {/ * код функции здесь * /}}', который должен был быть здесь: var myObj = {foo: function (bar, baz) {/ * здесь код функции * /} } 'Браузер QtWeb бросил это для меня, чтобы легко видеть в консоли. – kohloth

+1

@kohloth Рад, что я мог помочь! –

+1

Да! Это сработало! –

10

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 
-1

Хотя ответ 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