/ / Rozszerzenie Google Chrome, aby otworzyć stronę Nowa karta - javascript, jquery, google-chrome, google-chrome-extension

Rozszerzenie Google chrome otwiera stronę Nowa karta - javascript, jquery, google-chrome, google-chrome-extension

Próbuję zrobić proste rozszerzenie chromowane. Ma on dodawać element „Otwórz nową kartę” w menu kontekstowym ikony chromu w zasobniku systemowym Windows (podobnie jak w przypadku rozszerzenia sprawdzania plus dla rozszerzenia Gmail; patrz drugi obraz poniżej).

kiedy klikam opcję, chrom powinien (sprawdź, czy jakieś okno jest otwarte. Jeśli tak, to powinno) otwórz stronę nowej karty. Jeśli żadne okna nie są otwarte, to powinno otworzyć nowe okno chrome z wyświetloną stroną nowej karty.

Co do tej pory zrobiłem:

manifest.json

{
"manifest_version": 2,

"name": "Open New Tab",
"description": "This extension open a new tab page",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png"
},
"background":{
"scripts":["background.js"],
"persistent": false
},
"permissions": [
"background",
"activeTab"
]
}

background.js

chrome.browserAction.onClicked.addListener(function(tab)
{
chrome.tabs.create({ url: "chrome://newtab" });
}
);

background.html

<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(window)
{
chrome.windows.create({url: "chrome://newtab", type: "normal"});
}
);
</script>
</head>
</html>

Już załadowałem to rozszerzenie. Dotychczasowe efekty mojego rozszerzenia na chrom:
1) Okno Chrome jest już otwarte. Moja ikona pojawia się na liście rozszerzeń i jest klikalna.wprowadź opis obrazu tutaj
Po kliknięciu otwiera się strona „nowa karta” w tym samym oknie. To jest poprawne. (Chociaż tego nie potrzebuję. Na razie niech tak będzie.)

2) Okno Chrome jest zamknięte, a chrom może działać w tle. Kliknij prawym przyciskiem ikonę chromowanej tacy. Moje menu rozszerzenia „Otwórz nową kartę” pojawi się w menu.wprowadź opis obrazu tutaj
To również jest poprawne. Po kliknięciu zostanie utworzone nowe okno chrome. (Obecnie nie sprawdziłem jeszcze, czy okno już istnieje. To nastąpi później.).

Problem polega na tym, że w nowym oknie tootwiera, zamiast strony „nowa karta”, chrome automatycznie otwiera adres „chrome: // extensions”. To jest złe i nie mogę zrozumieć, dlaczego otwiera się strona rozszerzeń. Chcę otworzyć stronę nowej karty i przekazuję adres URL „chrome: // newtab”. Jak sprawić, by chrome otwierał tutaj stronę nowej karty? Chrome działa poprawnie, gdy uruchamiam go z ikony na pulpicie lub z menu Start systemu Windows. Problem wydaje się być związany z moim kodem.

Każda pomoc jest doceniana.

Odpowiedzi:

1 dla odpowiedzi № 1

Słuchać chrome.windows.onCreated Jeśli po kliknięciu prawym przyciskiem myszy na ikonę chromowanej tacy uruchomione zostanie nowe okno, można utworzyć nową kartę w module obsługi zdarzeń.

chrome.windows.onCreated.addListener(function(window) {
chrome.windows.getAll(function(windows) {
if (windows.length === 1) {
chrome.tabs.create({windowId: window.id, url: "chrome://newtab"});
}
});
});