Wpis z mikrobloga

W chatgpt.com, textarea jest czyszczona po 1 sekundzie od załadowania strony.
Przez to skrypt który wkleja tekst poprzez textareaEl.value = "tekst" nie wystarcza.

Zrobiłem z setTimeout 1001 ms, to działa, już przy 1000 ms nie działa.
Observery nie ogarniają, ale może źle coś robię?
Z opóźnieniem 1001 ms jest to zawodne, bo czasem dzieje się to w dłuższym czasie, więc pomóż znaleźć lepszą metodę?

Następny problem, to że nawet jak wpiszę, to buttonEl.click(); i tak nie zadziała, bo aktywuje się dopiero po wpisaniu czegoś z klawiatury, a wywołanie event keydown itp. też nie działa. Więc pozostaje po wklejeniu poprzez textareaEl.value = "tekst", naciśnięcie jakiegoś znaku na klawiaturze, skasowanie go, i naciśnięcie Enter, żeby wiadomość została wysłana.
Też mógłbyś pomóc to rozwiązać?

Dosłownie nie ma metody, żeby stworzyć Search Engine dla Firefox dla ChatGPT. :/

Metoda którą opisałem, jest niedoskonała oraz niedokończona.

Przed tymi dwoma krokami, po prostu pobieram parametr z URL, w formie [https://chatgpt.com/?usq=test](https://chatgpt.com/?usq=test), strona nie kasuje parametru usq po załadowaniu strony, więc spokojnie można z tego skorzystać.

Jak to się uda, to spakuję to w WebExtension, i upublicznię.

#frontend #javascript #userscript #skrypt #addons #extensions #dodatki #rozszerzenia #plugin #wtyczki #chatgpt #ai #firefox
  • 9
  • Odpowiedz
@look997: A nie możesz zrobić czegoś takiego, że wklejasz tekst np. dupa i dodajesz onchange na textarea i jak się odpali to odpinasz go i następnie wklejasz prawidłowy tekst? Albo robisz sobie jakiegoś intervala/observera sprawdzającego czy textarea jest pusta i dopiero wtedy wklejasz prawidłowy tekst?
  • Odpowiedz
  • 0
@lobo: onchange sprawdzałem, i nie działa. W ogóle, jak strona czyści texstarea poprzez np. textareaEl.value = "", to tego onchange ani oninput nie wykryje.

Nawet event reset sprawdzałem (bo to siedzi w formularzu), i też nic.

Observer nie wykrywa tego, nawet jak go dałem na body i wyłapywał każdą zmianę w strukturze DOM.

Interval też nie za dobre, bo na wstępie pole jest puste, potem przez ułamek sekundy widać mój
  • Odpowiedz
@look997:

Interval też nie za dobre, bo na wstępie pole jest puste, potem przez ułamek sekundy widać mój sklejany przez skrypt tekst, i znów puste, to w sumie co ma rozpoznawać?

No wrzucasz swój tekst dupa do textarea, następnie odpalasz interval co np. 50ms i sprawdzasz czy text area pusta jak tak znaczy już tekst został usunięty i możesz dodać ten prawidłowy i wyłączyć intervala
  • Odpowiedz
@look997: Mam lepsze rozwiązanie możesz dodać do prototypu textarei zmodyfikowaną metodę setValue

HTMLTextAreaElement.prototype.setValue = function(value) {
this.value = value;
// tu sobie rób co chcesz :)
};

zobacz demo https://jsfiddle.net/e3dpmfg8/2/ oczywiście musisz tam zrobić logikę aby wywołać to tylko raz kiedy potrzebujesz, ale już masz ppunk zaczepu
  • Odpowiedz
  • 0
@lobo: A sprawdziłeś na stronie?
Bo ja wcześniej też tak zrobiłem, i nie działało. W sumie ChatGPT mi to podpowiedział.
Oczywiście znałem taką metodę wcześniej.
  • Odpowiedz
@look997: Nie korzystam u nich z chata więc nie wiem, a oni przypadkiem nie podmieniają całego elementu textarei? Bo to nie powinno tylko wtedy nie zadziałać. Jak tak to wtedy możesz observer dać na wyższym elemencie i sprawdzać.
  • Odpowiedz
  • 0
@lobo: No właśnie nie, bo przed wyczyszczeniem sobie zapisuję textareaEl do zmiennej i ten element przetrwa czyszczenie.

Jak tak to wtedy możesz observer dać na wyższym elemencie i sprawdzać.


@lobo: No robiłem tak i nie wykrywa żeby coś się działo z texarea.
  • Odpowiedz