13.08.2022, 15:16
Hallo,
ich habe mit meinen (sehr beschränkten) Javascriptkenntnissen und einigem Api NAchschlagen nun was zusammengeschustert, von dem ich hoffe dass es fehöerfrei ist und das tut, was es soll (Ich traue mich nicht, es auszuführen. Ganz zu schweigen dass ich keine Ahnung habe, wie ich den Code nun in ein nutzbares AddOn reinkriege):
Was er, so meine Hoffnung, tun sollte:
Wird auf das AddonIcon geklickt, dann wird geguckt welcher Badge" Wert da hinterlegt ist.
Ist da nur ein leerer String, dann wird der Index vom aktuellen Tab gesucht und da reingepackt.
ist hingegen ein nicht-leerer String drin, wird dieser String im hinterkopf gemerkt als "startindex" sozusagen.
der EndIndex wird auf den index des aktuell fokussierten Tabs gelegt.
kurzum, ich habe nun also den Index des ersten uznd den index des letzten Tabs, alles dazwischen soll später gelöscht werden.
Nun gehen wir mit diesen 2 zahlen in die Delete Methode rein:
Wir bauen uns ein anfangs leeres Array an Indizes.
sowie ein Array, in dem alle Tabs drin sind.
Mit klassischer for schleife betrachten wir alle diejenigen tabs deren index zischen den gegebenen Grenzen liegt, und fügen deren jeweilige id in das array an indexwerten ein.
damit wir einfahc eine lsite/array an ids von tabs haben, die gelöscht werden sollen.
dann wird, simpel und plumb, diese liste an ids an die remove funktion übergeben (laut mozilllaseiten sollte die methode auch ein array verwerten können).
jsut for fun lassen wir im erfolgsfall, wenn also allesproblemlos gelöscht wurde, ein win ausgeben, andernfalls ein error.
achja, in der hauptmmethode wird, nahcdem der ganze löschkram durch ist, natürlich das badge nun wieder auf den leeren string gesetzt.
kurzum, der badgetext, insofenr vorhanden, "speichert" den startindex.
und der endindex ist der index des aktuellen tabs, der beim 2. klicken gerade aktuell ist.
macht das so sinn und ist es richtig umgesetzt?
Und wie baue ich da nun wieder ein addon draus?
habe mir die struktur in so einem addon zip file angeguckt, die manifest.js datei ist ja nicht wirklich schwer zu bauen und die background.js habe ich im prinzip shcon, nur den kram in dem META_INF Ordner weiß ich nicht wo ich den herbekomme
ich habe mit meinen (sehr beschränkten) Javascriptkenntnissen und einigem Api NAchschlagen nun was zusammengeschustert, von dem ich hoffe dass es fehöerfrei ist und das tut, was es soll (Ich traue mich nicht, es auszuführen. Ganz zu schweigen dass ich keine Ahnung habe, wie ich den Code nun in ein nutzbares AddOn reinkriege):
Code:
'use strict';
chrome.browserAction.onClicked.addListener(function(aTab, event) {
async function test(){
let badgetext = browser.browserAction.getBadgeText({});
if(badgetext===""){
let currTab = await browser.tabs.getCurrent();
chrome.browserAction.setBadgeText({text: ''+currTab.index});
return;
}
else{
let tabaindex=parseInt(badgetext);
let tabbindex=(await browser.tabs.getCurrent()).index;
if (tabaindex>tabbindex){
let help=tabaindex;
tabaindex=tabbindex;
tabbindex=help;
}
Delete(tabaindex,tabbindex);
chrome.browserAction.setBadgeText({text:''});
return;
}
}
test();
async function callToDelete(startIndex, endIndex)
{
let chosenTabsIndexes = new Array();
let allTabs = await browser.tabs.query({});
for (let i = startIndex+1; i <= endIndex-1; i++) {
chosenTabsIndexes.push(allTabs[i].id);
}
let removing = browser.tabs.remove(chosenTabsIndexes);
removing.then(console.log('WIN!'),console.log('ERROR!'));
}
});
Was er, so meine Hoffnung, tun sollte:
Wird auf das AddonIcon geklickt, dann wird geguckt welcher Badge" Wert da hinterlegt ist.
Ist da nur ein leerer String, dann wird der Index vom aktuellen Tab gesucht und da reingepackt.
ist hingegen ein nicht-leerer String drin, wird dieser String im hinterkopf gemerkt als "startindex" sozusagen.
der EndIndex wird auf den index des aktuell fokussierten Tabs gelegt.
kurzum, ich habe nun also den Index des ersten uznd den index des letzten Tabs, alles dazwischen soll später gelöscht werden.
Nun gehen wir mit diesen 2 zahlen in die Delete Methode rein:
Wir bauen uns ein anfangs leeres Array an Indizes.
sowie ein Array, in dem alle Tabs drin sind.
Mit klassischer for schleife betrachten wir alle diejenigen tabs deren index zischen den gegebenen Grenzen liegt, und fügen deren jeweilige id in das array an indexwerten ein.
damit wir einfahc eine lsite/array an ids von tabs haben, die gelöscht werden sollen.
dann wird, simpel und plumb, diese liste an ids an die remove funktion übergeben (laut mozilllaseiten sollte die methode auch ein array verwerten können).
jsut for fun lassen wir im erfolgsfall, wenn also allesproblemlos gelöscht wurde, ein win ausgeben, andernfalls ein error.
achja, in der hauptmmethode wird, nahcdem der ganze löschkram durch ist, natürlich das badge nun wieder auf den leeren string gesetzt.
kurzum, der badgetext, insofenr vorhanden, "speichert" den startindex.
und der endindex ist der index des aktuellen tabs, der beim 2. klicken gerade aktuell ist.
macht das so sinn und ist es richtig umgesetzt?
Und wie baue ich da nun wieder ein addon draus?
habe mir die struktur in so einem addon zip file angeguckt, die manifest.js datei ist ja nicht wirklich schwer zu bauen und die background.js habe ich im prinzip shcon, nur den kram in dem META_INF Ordner weiß ich nicht wo ich den herbekomme