Buduje chrome extension i nie działa mi javascript.

Buduje chrome extension i nie działa mi javascript.
WI
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 miesięcy
  • Postów:18
0

Buduje chrome extension i nie działa mi javascript. Czytałem że chyba muszę dodać eventlistenery.
Wtyczka będzia działać tylko wewnątrz popupu wiec ten javascript nie wchodzi w interakcje z stronami zewnętrznymi.

Kopiuj
function p1() {a = document.form1.a.value.replace(',', '.')/100;b = a*document.form1.b.value.replace(',', '.');document.form1.total1.value = b}
edytowany 1x, ostatnio: Riddle
Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:dzień
  • Postów:847
1

Powinieneś dodać ten skrypt do manifest.json i ustawić odpowiednie uprawnienia

https://developer.chrome.com/docs/extensions/mv3/getstarted/

WI
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 miesięcy
  • Postów:18
0

Nie widzę nic w tym linku nic o dodawaniu javascriptu do manifestu jedynie do background .js plus dodanie do manifestu "service_worker". Co zrobiłem i dalej nie działa

Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:dzień
  • Postów:847
0

Wrzuć tutaj na forum swój manifest.json

edytowany 1x, ostatnio: Xarviel
WI
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 miesięcy
  • Postów:18
0
Kopiuj
{
"manifest_version": 2,
"name": "coś",
"description": "coś",
"version": "1.0",
"icons": {"128": "128.png"},
"browser_action": {
	"default_icon": "icon.png",
	"default_popup": "popup.html"
},
  "background": {
    "service_worker": "script.js"
  },
"permissions": ["activeTab","storage"]
}

overcq
"manifest_version": 2 jest przestarzałe, użyj "manifest_version": 3.
Gouda105
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:487
0
winnxan napisał(a):
Kopiuj
{
"manifest_version": 2,
"name": "coś",
"description": "coś",
"version": "1.0",
"icons": {"128": "128.png"},
"browser_action": {
	"default_icon": "icon.png",
	"default_popup": "popup.html"
},
  "background": {
    "service_worker": "script.js"
  },
"permissions": ["activeTab","storage"]
}

Tak się składa, że od jakiegoś czasu piszę sobie wtyczkę do chroma i coś niecoś się nauczyłem.
Możliwe, że kod się wykonuje, ale nie działa jak powinien. Żebyśmy mogli to ocenić musielibyśmy zobaczyć Twój popup.html.
Na ten moment mogę zadać Ci kilka pytań, które nam objaśnią Twoją sytuację:

  1. Czy okienko popup się pokazuje?
  2. Czy w konsoli Skryptu service worker są jakieś błędy (aby sprawdzić to, wejdź w chrome://extensions/, a następnie przy Twoim rozszerzeniu naciśnij skrypt service worker)
  3. Czy jeśli zakomentujesz cały kod i wstawisz console.log, ewentualnie alert() to się wykonują?
WI
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 miesięcy
  • Postów:18
0

okienko popup sie pokazuje

wyskakuje błąd

Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present.

i zaznacza ta linie w popup.html

Kopiuj

  <input type="number" pattern="[0-9]*" inputmode="decimal" name=c placeholder="k" oninput="p2()">  <input type="number" pattern="[0-9]*" inputmode="decimal" name=d placeholder="j" oninput="perc2()">  <input size=7 name=total2>

Gouda105
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:487
1

Z tego co się rozeznałem ten błąd odnosi się do wbudowanych programów obsługi zdarzeń. We wtyczkach nie możesz używać np. onClick w HTML.
https://stackoverflow.com/a/58689794/16880863
musisz do tego wykorzystać JS:
https://stackoverflow.com/a/36349056/16880863

Jeśli kod nadal nie działa, albo masz jakieś problemy pokaż nam swój HTML. Bez niego to będzie wróżenie z fusów.

Dodatkowo niektóre Twoje atrybuty nie mają cudzysłowów - name=d, name=c, size=7 name=total2.

edytowany 1x, ostatnio: Gouda105
WI
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 miesięcy
  • Postów:18
1

Dziekuje za odpowiedź

Chyba chodzi rzeczywiście o drugi link który podałeś czyli nie może być we wtyczkach chrome inline javascriptu, czyli oninput="p2()"

Teraz musze chyba dodać "id" do inputów i potem coś takiego

Kopiuj

document.getElementById("myButton").addEventListener("click", myFunction);

function myFunction(){
  console.log('asd');
}

tylko że tu przykład funkcji po kliknięciu buttona a mi się to automatycznie oninput wykonywał

druga sprawa że nie może być 2 id więc będę musiał zrobić getelemntby class ?? Dodam klase która wrzuca to do 1 funkcji z 2 pól input

Gouda105
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:487
0

Jeśli chcesz, żeby eventListener był wywoływany jak oninput, użyj:

Kopiuj
element.addEventListener("input", (e)=>{
  const myInputText = e.target.value
  console.log(myInputText)
})

Od razu masz jak dobrać się do jego wartości.

Fajne gdybyś opowiedział, do czego ma służyć twój kod i pokazał swój JS. Wtedy razem dojdziemy do rozwiązania. Mam trochę czasu możemy pokombinować.

druga sprawa że nie może być 2 id więc będę musiał zrobić getelemntby class ?? Dodam klase która wrzuca to do 1 funkcji z 2 pól input

Po raz kolejny wróżenie z fusów. Tak, nie może być 2 takich samych id, ale jak to zmienić to ja ci nie powiem, bo nie wiem co ma robić ten kod.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.