2013-06-17 15 views
13

Gdzie mogę zobaczyć wyjście javascript debug gdy wkhtmltopdf działa w trybie debugowania (--debug-javascript)Debugowanie javascript w wkhtmltopdf

+1

Czy działa to w wierszu poleceń/terminalu? Powinien się wydrukować po wykonaniu pliku wkhtmltopdf. Należy pamiętać, że jest to tylko drukowanie zarejestrowanych zdarzeń, a nie wszystko, co robi javascript. Ponadto, jeśli używasz przełącznika '--quiet', nie wydrukuje on żadnych informacji debugowania. – matth

Odpowiedz

18

Innym (powiedziałbym, najłatwiejszym) sposobem debugowania javascript w WKHTMLTOPDF jest pobranie QT Browser, podstawowej przeglądarki używanej przez WKHTMLTOPDF oraz sprawdzenie wykonania javascript dla twojej strony z poziomu przeglądarki.

Można go pobrać z here

Instrukcji na debugowania JavaScript w QT here

Można w zasadzie debugowania JavaScript w przeglądarce QT tak samo jak w Chrome lub Firefox.

+1

Świetna odpowiedź. Właśnie zrobiłem to i stwierdziłem, że miałem błąd składni w moim JavaScript, który nie został wykryty przez Chrome ani Firefox. Miałem literał obiektowy, który nie używał słowa kluczowego function. tj. 'var myObj = {foo (bar, baz) {/ * kod funkcji tutaj * /}}', który powinien być 'var myObj = {foo: function (bar, baz) {/ * tutaj kod funkcji * /} } 'Przeglądarka QtWeb wyrzuciła je dla mnie, aby łatwo zobaczyć w konsoli. – kohloth

+1

@kohloth Cieszę się, że mogę pomóc! –

+1

Tak! Zadziałało! –

10

Rendering test.html

<!DOCTYPE html> 
<html> 
    <head></head> 
    <body> 
    BODY 
    <script> 
     console.log('Hi!'); 
    </script> 
    </body> 
</html> 

tak

wkhtmltopdf test.html test.pdf --debug-javascript 

powinien zwrócić coś takiego

Loading pages (1/5) 
Warning: :0 Hi!             
Resolving links (2/5)            
Counting pages (3/5)              
Printing pages (5/5)              
Done 
-1

Mimo, że odpowiedź Daffy'ego jest poprawna, kilka tygodni temu miałem dodatkowy pomysł, który bardzo mi pomógł. To chcę podzielić: pokaż go wewnątrz PDF

Podczas renderowania układ dla PDF umieścić dodatkowy (ukryty) DIV #pdf_errors

i bardzo wcześnie w źródle - jeśli #pdf_errors jest tutaj - I niech moc konsoli punkt do wypełnienia ten div i błąd - pokazuję to. Nie jest to debugowanie, ale przynajmniej widzę, co się stało.

Źródło w coffeescript moi zwykły javascript czasy dawno już minęły ...

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