Warum ist chrome.browserAction.onClicked nicht definiert?

Lesezeit: 2 Minuten

Benutzer-Avatar
Alon Mahl

Ich schreibe eine Chrome-Erweiterung, die mich zu einer URL weiterleitet, wenn ich auf das Aktionssymbol des Browsers klicke.

Ich versuche zu verwenden:

chrome.browserAction.onClicked.addListener

aber ich bekomme

Uncaught TypeError: Eigenschaft „onClicked“ von undefined kann nicht gelesen werden

Dies ist meine Manifestdatei:

{
    "name": "first extension",
    "version": "2.2.12",
    "description": "redirct to a link icon",
    "browser_action": {
        "default_icon": "icontest.png",
        "default_title": "Do action"
    },
    "permissions": ["tabs", "http://*/*"],
    "content_scripts": [{
        "matches": ["http://*.twitter.com/*", "https://*.twitter.com/*"],
        "js": ["twterland.js"]
    }],
    "icons": {
        "16": "icontest.png",
        "48": "icontest.png",
        "128": "icontest.png"
    }
}

Dies ist meine js-Datei:

chrome.browserAction.onClicked.addListener(function(tab) { alert("hi"); });

Benutzer-Avatar
Derek 朕會功夫

Es scheint, als ob der Code in Ihrem ist twterland.js Datei, die Ihr Inhaltsskript ist. browserAction kann nur in Erweiterungsseiten verwendet werden, Sie können es also nicht in Inhaltsskripts verwenden.

Dokumentieren: https://developer.chrome.com/extensions/content_scripts

Inhaltsskripte haben jedoch einige Einschränkungen. Sie können nicht:
Chrome.*-APIs verwenden (außer Teile von chrome.extension)
– Verwenden Sie Variablen oder Funktionen, die auf den Seiten ihrer Erweiterung definiert sind
– Verwenden Sie Variablen oder Funktionen, die von Webseiten oder anderen Inhaltsskripten definiert werden

Legen Sie es auf die Hintergrundseite stattdessen.

Wenn Sie keine haben "browser_action" Eigenschaft in Ihrer definiert manifest.json dann kann dieser Fehler auftreten. Die Antwort von @Kirill funktioniert, aber Sie müssen auch ein Leerzeichen hinzufügen icon.png Datei andernfalls gibt Chrome einen Fehler aus, dass eine solche Datei nicht gefunden werden kann.

Fügen Sie dies dem hinzu manifest.json Datei sollen Unterdrücke dies ist ein Fehler:

"browser_action": {}

Lesen Sie unbedingt die Dokumentation zum Nachschlagen zur Verwendung der "browser_action" Einstellung.

  • Ich habe immer noch browser_action in meinem Manifest definiert chrome.pageAction ist in meinem Hintergrundskript nicht definiert

    – Alexander Mills

    8. Januar 2018 um 19:54 Uhr


  • @AlexanderMills Die ursprüngliche Frage betraf chrome.browserAction also bin ich mir nicht sicher pageAction.

    – Sgnl

    8. Januar 2018 um 20:15 Uhr

  • Ich musste auch die Erweiterung entfernen und neu installieren.

    – Evanss

    8. Januar 2021 um 15:24 Uhr

Benutzer-Avatar
Hasan Abu Shally

Bitte beachten Sie, dass Sie nur einen davon heben können app, browser_action, page_actions in Ihrer manifest‎.json-Datei vorhanden.

Zum Beispiel, um die zu verwenden chrome.browserAction.setBadgeText die solltest du haben browser_action Feld in Ihrem Manifest‎.json.

  • Ich habe immer noch browser_action in meinem Manifest definiert chrome.pageAction ist in meinem Hintergrundskript nicht definiert

    – Alexander Mills

    8. Januar 2018 um 19:54 Uhr


  • @AlexanderMills Die ursprüngliche Frage betraf chrome.browserAction also bin ich mir nicht sicher pageAction.

    – Sgnl

    8. Januar 2018 um 20:15 Uhr

  • Ich musste auch die Erweiterung entfernen und neu installieren.

    – Evanss

    8. Januar 2021 um 15:24 Uhr

Benutzer-Avatar
Fergal Moran

Ich habe das auch bekommen und hinzugefügt

"persistent": true 

zu meiner Hintergrunddeklaration in manifest.json hat es gelöst.

  • Während dies die Situation “löst”, gibt es anscheinend einige Gründe nicht haben "persistent": truealso keine ideale Lösung.

    – AntonOfTheWoods

    18. September 2020 um 8:31 Uhr

  • Beachten Sie, dass diese Funktion nicht vorhanden ist, wenn Ihre Chrome-Erweiterung Version 3 im Manifest verwendet.

    – Raleigh L.

    10. Januar um 23:44 Uhr

1009930cookie-checkWarum ist chrome.browserAction.onClicked nicht definiert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy