Ich baue eine Chrome-Erweiterung, die eine Popup.html mit einem Suchformular hat. Wie bei Travelocity oder Kayak enthält das Formular Kontrollkästchen, so dass der Benutzer auswählen kann, welche Seiten er abfragen möchte.Chrome Extension - Ausführen von executeScript in mehrere neue Registerkarten gleichzeitig
Beim Senden startet popup.js
mehrere neue Registerkarten basierend auf den ausgewählten Kontrollkästchen. In der tabs.create()
Rückruf für jede neue Registerkarte verwende ich executeScript zu: - (A) injizieren die Benutzer-Abfrage in das Suchformular auf jeder der neuen Seiten, und - (B) senden Sie das Suchformular auf diesen Seiten.
Mein Code funktioniert, wenn ein Kontrollkästchen ausgewählt ist (d. H. Ein neues Register wird gestartet), aber wenn mehrere neue Registerkarten gleichzeitig erstellt werden, scheint das executeScript nicht konsistent zu laufen. Manchmal funktioniert es und manchmal nicht.
Das führt mich zu der Annahme, dass es ein Problem mit dem Timing der Skriptausführung gibt, aber ich bin mir nicht sicher.
Wenn Sie eine Idee haben, was los ist, würde ich gerne Ihren Rat hören.
Außerdem würde ich mich über alle Ressourcen freuen, wie Sie dieses Problem in der Zukunft beheben können.
Hier ist mein Code auf Github ...
- ganze Repo: https://github.com/rossmorey/SongSearch
- manifest.json
- popup.html
- popup.js (relevanteste Datei)
Vielen Dank!
Entschuldigung, ich hätte eine genauere Frage zum Debuggen stellen sollen - ich bin vertraut mit Devtools, aber in diesem Fall habe ich keine Möglichkeit gefunden, einen Breakpoint zu einem gerade geöffneten Tab hinzuzufügen. Wie würde ich den von executeScript eingefügten Code debuggen? Außerdem erwähnen Sie direkte URL mit Suchparametern. Zwei der Seiten, die ich abfrage, haben keine URL-Struktur, die dies unterstützt. Ich denke, Sie können in meinem Code sehen, dass ich die direkte URL verwende, wo es möglich ist. Danke für Ihre Hilfe! :) – rossmorey