czy mogę zapobiec przycinaniu przez Chrome ciągów w konsoli programisty?


47
> ary = new Array('test msg kinda long but gets the point across and such and it shows ellipsises after a certain point in my test. test msg kinda long but gets the point across and such and it shows ellipsises after a certain point in my test. test msg kinda long but gets the point across and such and it shows ellipsises after a certain point in my test. test msg kinda long but gets the point across and such and it shows ellipsises after a certain point in my test. test msg kinda long but gets the point across and such and it shows ellipsises after a certain point in my test.');
> JSON.stringify(ary)
"["test msg kinda long but gets the point across and such and it shows ellipsises... (length: 116)"

Naprawdę chcę pełnego obiektu, ale Chrome chce przyciąć wynik o około 80 znaków. W ustawieniach konsoli nie widzę niczego, co by to zmieniło.

Odpowiedzi:


43

Niedawno odkryłem, że narzędzia deweloperskie Chrome mają copyfunkcję kopiowania do schowka - bez obcinania! W wygodny sposób serializuje również obiekty do elementów JSON i DOM do HTML, bezpośrednio do schowka.

copy(someLongString); // no truncation!
copy({ foo : true }); // JSON
copy(someDOMElement); // HTML

Ponieważ próbowałem skopiować długi ciąg do schowka w celu analizy w innym miejscu, doskonale spełniło to moje potrzeby


3
to jest śliskie; tak naprawdę nie odpowiada na pytanie, zamiast tego powinien być komentarz
jcollum

2
+1 to jest bardzo przydatne. To prawda, że ​​technicznie nie odpowiada na pytanie, ale rozwiązuje problem powodujący, że pytanie jest zadawane - jak uzyskać pełny, nieskalowany tekst z konsoli. Po prostu wklej go do edytora tekstowego i posortuj.
2015 r

Mam przeglądarkę Chrome: Uncaught ReferenceError: kopia nie jest zdefiniowana
arod

3
@arod jest dostępny tylko w konsoli, nie gobally
WickyNilliams

2
Działa to również w przeglądarce Firefox.
Björn

16

console.dir(longstringhere) Pracuje.

copyteż dla mnie nie działało, to znaczyło, że tak undefined.


1
To samo tutaj. „console.copy” nie działało, ale „console.dir” działało. Uratowałeś mi dzień.
Betty,

2
copyfunkcja nic nie wypisuje (stąd undefinedoczekiwane), zamiast tego kopiuje argument do bufora systemu, wystarczy wkleić go ( ctrl-v) do dowolnego edytora
nazikus

1
nie działa ....
Yossi Shasho,

2
Musisz skopiować z konsoli, np. Umieścić punkt przerwania tam, gdzie jest wartość, otwórz konsolę, wpisz copy(yourVariable). Poza tym to po prostu copynie jestconsole.copy
WickyNilliams,

1
Każda funkcja w JS zwraca wartość niezdefiniowaną, jeśli nie jest określona. Więc to faktycznie działa.
atilkan

5

To zachowanie nadal występuje w wersji Chrome 37.0.2062.103.

Można to obejść podczas debugowania, używając: document.write („Mój naprawdę długi tekst debugowania”);


37.0.2062.120 m na Windows 7: bez elips.
jcollum,

Już nie działa ..
Totty.js


2

Uaktualnij Chrome do wersji 32, która już tego nie robi, jak pokazano na tym obrazku:

wprowadź opis zdjęcia tutaj


2
chrome canary v36 + ... wciąż to robi. ... ale teraz nie pokazuje długości. np long string...ends here.
gcb

Jesteś w wersji Chrome, która nie została jeszcze wydana. Nie dzieje się tak w wersji 33 na Ubuntu: imgur.com/RPCgR6f - czy głosowałeś na mnie, ponieważ moje rozwiązanie nie rozwiązało problemu, mimo że jesteś w wersji wstępnej ?!
jcollum

1
„rozwiązać problem. uruchomienie starej wersji przeglądarki nie jest możliwe” --- to nie jest stara wersja przeglądarki! Jestem na bieżąco i mam v33 w Ubuntu. Moje okno systemu Windows jest aktualne i ma v34. Nie wiem skąd bierzesz v36. „nie dzieje się to na v33” - i tak się nie dzieje, co potwierdza zrzut ekranu (z v33).
jcollum

1
najważniejsze jest to, że ten błąd / zachowanie zostało wprowadzone ponownie po 33 lub 34.
gcb

1
To miłe. Powinieneś przesłać raport o błędzie. Ponieważ prąd wydana wersja Chrome nie ma, nie należy downvote mnie mówiąc aktualizację do najnowszej wydanej wersji przytwierdza to Chrome. Dotyczy to wersji V34 na Win7 i V33 na Ubuntu.
jcollum

2

W Chrome 58 (może wcześniej) możesz użyć Store as Global Variableopcji menu w menu kontekstowym dowolnej wartości w konsoli, zagnieżdżonej na dowolnym poziomie. Przypisuje wybraną wartość zmiennej o unikalnej nazwie, która jest natychmiast logowana do konsoli.

Właśnie wypróbowałem na wartości 400 KB!

Źródło: https://stackoverflow.com/a/41726364/250838


2

Długość łańcucha renderowanego w konsoli jest programowo ograniczona w inspector.js. Domyślnie jest ustawiony na 150 znaków. Nie możesz zastosować CSS, ponieważ jest renderowany na konsolę jako HTML. Tekst został już obcięty.

Możesz to zmienić, ale zajmie to trochę pracy:

Niezbędne i pomocne narzędzia:

• ack (brew install ack) lub ag. (do szybkiego wyszukiwania dużych plików tekstowych).

• paktools dla Pythona. Do rozpakowywania zasobów chrome, aby móc je edytować. https://github.com/Magister/pak-tools .

• dowolny edytor tekstu.

  1. CD lub przejdź do dowolnej wersji Chrome. Używam Chromium jako przykładu, ale ścieżka jest taka sama w innych wersjach:

    cd "/Applications/Chromium.app/Contents/Versions/YOURVERSION/Chromium Framework.framework/Resources/"
    
  2. Sklonuj lub pobierz paktools. Umożliwi to rozpakowanie zasobów chrome, edycję ich, a następnie ponowne ich zapakowanie. Umieściłem moje w moim, ~./binale możesz je umieścić w dowolnym miejscu. Przykłady będą odzwierciedlać moją ścieżkę:

  3. Teraz w Chrome/.../Chrome Framework.framework/Resouresfolderze wykonaj: python2 ~/.bin/unpack.py resources.pakicd ./resouces

  4. Musisz znaleźć, gdzie to jest. Pliki zmieniają się cały czas, więc nigdy nie są takie same. $ ag "static linkify"To mnie zabrało 28542. Zmodyfikowałem tę funkcję do domyślnej na 2000 znaków, a także zaktualizowałem css, aby móc przewijać w poziomie w konsoli.

  5. teraz cd z powrotem z rozpakowanego folderu resouces i do jego rodzica. Wykonaj: python2 ~/.bin/pack.py resourcesi voila. Uruchom ponownie Chrome, a twoje devtools są teraz niestandardowe.

OSTRZEŻENIE: 6. Zespół devtools wysyła aktualizacje wersji frameworka bez Twojej wiedzy. A jeśli tak, stracisz wszystkie mody. /Users/Op/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/ksinstall --uninstallBlokuję go, wykonując i zabijając wszystkie diamony keystone itp.

Działa jak marzenie.

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.