Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozszerzenie dla Chrome
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
shl
Napisałem proste rozszerzenie dla Chrome, jak wklejam kod javascript w consoli na stronie docelowej wszystko fajnie dziala ( wyskakuje po prawej div z 3 przyciskami, po kliknieciu ktorych w formularzu wpisuja sie dane przypisane do przyciskow) problem powstaje jak wczytam pliki test.js i manifest.json ... rozszerzenie dziala pojawia sie na odpowiedniej stronie po wejsciu, ale po kliknieciu w przyciski nie wypelnia sie formularz, pojawia sie komunikat o bledzie:

Uncaught ReferenceError: addText1 is not defined
onclick


nie wiem jak inaczej zdefiniowac dane?

plik test.js

  1.  
  2. console.log("test.js Started .. ");
  3.  
  4. function addText1() {
  5. var tekst1 = document.getElementById('mailBody');
  6. tekst1.value = tekst1.value + "jakis inny tekst numer 3 .........";
  7. }
  8. function addText2() {
  9. var tekst2 = document.getElementById('mailBody');
  10. tekst2.value = tekst2.value + "jakis tekst numer 2 inne ... ";
  11. }
  12. function addText3() {
  13. var tekst3 = document.getElementById('mailBody');
  14. tekst3.value = tekst3.value + "Kolejny jakis tekst numer 3 inne ... ";
  15. }
  16.  
  17. var element = document.createElement('div'); //tworzymy nowego Diva
  18. element.id = 'blok';
  19. element.style.position = 'fixed';
  20. element.style.right= '0px';
  21. element.style.top = '190px';
  22. element.style.width = '100px';
  23. element.style.height = '100px';
  24. element.style.backgroundColor = '#FF6633';
  25. element.innerHTML = "<strong>Odpowiedzi</strong><br><button id=\"mybutton\" onclick=\"java script: addText1();\">tekst 1</button><br><button onclick=\"java script: addText2();\">tekst 2</button><br><button onclick=\"java script: addText3();\">tekst 3</button>";
  26. var body = document.getElementsByTagName('body')[0]; //pobieramy body
  27. body.appendChild(element); //wstawiamy element do drzewa dokumentu
  28.  


plik manifest.json

  1. {
  2. "version": "1.0.0",
  3. "name": "moj-test",
  4. "manifest_version": 2,
  5. "description": "Wykonanie: JA",
  6. "permissions": [
  7. "https://*/*",
  8. "http://*/*",
  9. "clipboardRead",
  10. "clipboardWrite",
  11. "cookies",
  12. "tabs",
  13. "notifications"
  14. ],
  15. "icons": {
  16. "16": "images/icon16.png",
  17. "48": "images/icon48.png",
  18. "128": "images/icon128.png"
  19. },
  20. "content_scripts": [
  21. {
  22. "matches": [
  23. "http://www.adres.pl/*"
  24. ],
  25. "js": [
  26. "test.js"
  27. ]
  28. }
  29. ]
  30. }
lukasz1985
Nie jestem w stanie pomóc ale zadam pytanie: czy naprawdę chcesz pisać rozszerzenie dla Chrome'a? Czy problem, który chcesz rozwiązać pisząc to rozszerzenie nie może być rozwiązany przy pomocy innych narzędzi/języka programowania? Pytam ponieważ odradzam z korzystania z przeglądarek jako platform tworzenia aplikacji, które nie mają stricte internetowego charakteru. Głównie ze względu na zmienność API. Z mojego doświadczenia wynika, że różne przeglądarki mają tendencję do zaniechania przestarzałych API i odrzucania nie kompatybilnego kodu. Często też zdaża się, że funkcje w nowej wersji nie działają tak jak powinny/działały we wcześniejszej.
Głównie dotyczy to właśnie Chrome'a ponieważ firma Google nie przywiązuje większej wagi do stabilności swojego oprogramowania.
shl
Odpowiem tak, to bardzo proste rozszerzenie, a bardzo pomaga przy pracy. Odpisujac na baaardzo duzo maili, mam od kilku do kilkunastu szablonow odpowiedzi, pytania się bardzo często powtarzają więc łatwo można wkleic gotowa odpowiedz dopisujac jedno dwa zdania. Oczywiscie mozna wchodzic w plik tekstowy kopiuj wklej odpowiedni szablon ... stad pomysl na rozszerzenie. Pasek z przyciskami po kliknieciu ktorych automatycznie wpisuje mi sie odpowiedz w danym wariancie, doklepuje jedno zdanie i wysylam, kolejny mail inny szablon jednym kliknieciem itd. Usprawnia to mega prace przy odpowiedzi na duza ilosc maili z bardzo czesto podobnymi pytaniami.
PrinceOfPersia
nie robiłem rozszerzeń do Chrome, ale mój pierwszy guess - czy nie robiąc rozszerzenia twój kod JS nie odpala się przypadkiem w jakimś sandboxie?
jeśli by tak było, znaczyć by to mogło to, że funkcja addText1() deklarowana byłaby w innym kontekście niż kontekst strony (czyli nie byłaby globalna).

(ale nie muszę mieć racji z tym, to tylko taki luźny pomysł)
shl
Tak masz racje jest odpalany wlasnie w takim jakby sandboxie.

Ok poradzilem sobie inaczej.

Temat do zamkniecia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.