recherche
Maisoninterface Webjs tutorielCréation d'une extension chromée pour Diigo, partie 2

Creating a Chrome Extension for Diigo, Part 2 head>

Rafraîchissement
// popup.js
var bg = chrome.extension.getBackgroundPage();

document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('refreshButton').addEventListener('click', function() {
        bg.doRequest();
    });
});
/* popup.css */
#refreshButton {
    margin: 10px;
}

Le code JS ici fait ce qui suit: Nous récupérons d'abord l'objet de fenêtre de la page AutoGenerated du script de fond.js. Les scripts contextuels ont un accès direct au code de la page d'arrière-plan, par opposition aux scripts de contenu qui doivent transmettre des messages. Ensuite, nous lions un gestionnaire de clics à l'événement de clic du bouton de rafraîchissement qui appelle notre méthode Dorequest à partir de fond.js.

Si vous rechargez l'extension maintenant et gardez la page d'arrière-plan générée ouverte, vous devriez voir des sorties répétées des signets récupérés lorsque vous cliquez sur le bouton Actualiser.

Nous pouvons maintenant continuer à coder en arrière-plan.js.

Traitement du tableau de réponse

Nous trouvons toutes les balises en itérant à travers tous les signets récupérés, en les stockant dans un tableau, puis en supprimant les doublons. Pendant que nous itérons, nous pouvons vérifier tous les signets contenant la balise «BBS-ROOT» et en faire une note dans une variable distincte. Ajoutons une fonction de processus:

var process = function(response) {
    var iLength = response.length;
    if (iLength) {
        console.info(iLength + " bookmarks were found.");
    } else {
        console.info("Response is empty - there are no bookmarks?");
    }
};

Aussi, dans la fonction Dorequest, remplacez

var response = JSON.parse(xml.responseText);
console.log(response);

avec Process (JSON.Parse (xml.ResponSeText));.

Le rechargement de l'extension imprimera le nombre de signets trouvés pour l'utilisateur sélectionné. Incluons une fonction d'assistance pour nous aider à filtrer les balises en double du tableau des balises. Cette fonction étend le tableau JavaScript natif, vous pouvez donc l'appeler comme s'il avait été construit tout au long. Mettez-le sous la partie Base64, près du haut du fichier:

/**
 * Removes duplicate elements from the array
 */
Array.prototype.unique = function () {
    var result = [];
    var len = this.length;
    while (len--) {
        if (result.indexOf(this[len]) == -1) {
            result.push(this[len]);
        }
    }
    this.length = 0;
    len = result.length;
    while (len--) {
        this.push(result[len]);
    }
};

Maintenant, construisons la fonction de processus.

var process = function(response) {
    var iLength = response.length;
    var allTags = [];
    var rootBookmarks = [];
    if (iLength) {
        console.info(iLength + " bookmarks were found.");
        var i = iLength;
        while (i--) {
            var item = response[i];
            if (item.tags !== undefined && item.tags != "") {
                var tags = item.tags.split(',');
                if (tags.indexOf('bbs-root') > -1) {
                    rootBookmarks.push(item);
                }
                allTags = allTags.concat(tags);
            }
        }
        allTags.unique();
        allTags.sort();
        console.log(allTags);
    } else {
        console.info("Response is empty - there are no bookmarks?");
    }
};

Nous itons à travers tous les signets, le cas échéant, et pour chacun, nous transformons leur propriété «Tags» en tableau. Ce tableau est ensuite fusionné avec le tableau AllTags sur lequel nous appelons UNIQUE () pour supprimer les doublons et triés par ordre alphabétique. Dans le processus, nous surveillons également les signets bbs-root et coprions leurs références au tableau RootBookmarks.

Nous sommes maintenant prêts à manipuler la barre des signets.

Books Barks

Tout d'abord, nous devons vérifier si "Diigo #bbs" existe en tant que dossier dans la barre des signets. Sinon, nous le créons. Mettez le code suivant immédiatement sous Alltags.sort () ;:

var folderName = 'Diigo #BBS';
        chrome.bookmarks.getChildren("1", function(children) {
            var numChildren = children.length;
            var folderId;
            while (numChildren--) {
                if (children[numChildren].title == folderName) {
                    folderId = children[numChildren].id;
                    break;
                }
            }
            if (folderId === undefined) {
                chrome.bookmarks.create({
                    parentId: "1",
                    title: folderName
                }, function(folder) {
                    folderId = folder.id;
                    console.log(folderName + " not found and has been created at ID " + folder.id);
                });
            }

        });

Nous obtenons d'abord les enfants du nœud avec l'ID 1, qui est la barre des signets (vous pouvez le voir en utilisant GetTree). Nous les itérons ensuite et comparons leurs titres au nom souhaité de notre dossier. Si le dossier est trouvé, nous enregistrons son ID et quittons la boucle. S'il n'est jamais trouvé, nous le créons et enregistrons l'ID.

Maintenant, nous devons savoir si notre dossier contient le dossier «Tags». Une fois que nous avons fait cela, nous devrons savoir si notre dossier «Tags» contient un sous-dossier correspondant au nom de chaque balise que nous avons trouvé. Vous remarquez un modèle ici? On dirait que nous aurons besoin d'une fonction commune pour vérifier si un dossier de signets contient un autre dossier. Nous pourrions aussi bien créer une autre méthode d'assistance pour vérifier également les signets réels. Ajoutons les fonctions suivantes à notre fichier background.js (au-dessus de la fonction de processus, par exemple):

// popup.js
var bg = chrome.extension.getBackgroundPage();

document.addEventListener('DOMContentLoaded', function () {
    document.getElementById('refreshButton').addEventListener('click', function() {
        bg.doRequest();
    });
});

Ces fonctions sont presque identiques, bien que chacune compare sa propre propriété à la valeur fournie. Nous en utiliserons un pour les dossiers et l'autre pour les signets. Ces méthodes sont asynchrones, tout comme le reste de l'espace de noms Chrome.

Vous pouvez également les fusionner en une seule méthode et utiliser un troisième paramètre qui indique la méthode quelle propriété que nous recherchons (titre ou URL), respectant ainsi un peu plus le principe sec. Je vais vous laisser cela pour le moment et y revenir dans un article de suivi qui se concentrera sur les optimisations.

Réécrivons notre méthode de processus pour l'utiliser maintenant.

/* popup.css */
#refreshButton {
    margin: 10px;
}
beaucoup plus concis, n'est-ce pas? Lorsque nous considérons d'autres étapes, il est clair que nous devons faire la différence entre une liste des balises existantes et la liste des balises que nous avons fraîchement récupérées sur le serveur. À cette fin, nous ajouterons deux nouvelles méthodes d'assistance à l'objet Native JavaScript Array: Intersect et Diff. Mettons-les en haut du fichier, juste où se trouve Array.Unique (), et même si nous y sommes, déplacez les méthodes GetFirstChildBytitle et GetFirstChildByurl là-haut.

var process = function(response) {
    var iLength = response.length;
    if (iLength) {
        console.info(iLength + " bookmarks were found.");
    } else {
        console.info("Response is empty - there are no bookmarks?");
    }
};
Enfin, ajoutons une méthode d'assistance pour la journalisation de la console au même endroit en haut de l'arrière-plan.js fichier:

var response = JSON.parse(xml.responseText);
console.log(response);
Vous pouvez désormais remplacer tous vos appels console.log () dans le code par un sabot. Lorsque vous devez désactiver la journalisation, basculez simplement la constante de console_logging en false et toutes les sorties s'arrêtent. C'est génial lors du passage du développement à la production - il introduit une très petite surcharge, mais réduit le temps de préparation en ce que vous n'avez pas besoin de traquer manuellement et de commenter ou de supprimer toutes les sorties de votre console.

Conclusion de la partie 2

Dans cette partie, nous avons construit plusieurs fonctions d'assistance essentielles pour des travaux supplémentaires et ajouté une logique de gestion des erreurs de base. Dans le prochain épisode de cette série, nous construisons le corps de l'extension. Restez à l'écoute!

Questions fréquemment posées (FAQ) sur la création d'une extension chromée avec Diigo

Comment installer l'extension Diigo Chrome?

Pour installer l'extension Diigo Chrome, ouvrez d'abord votre navigateur Google Chrome. Ensuite, accédez à la boutique en ligne Chrome et recherchez «Diigo Web Collector». Cliquez sur le bouton «Ajouter au Chrome» à côté de l'extension. Une fenêtre contextuelle apparaîtra pour demander une confirmation. Cliquez sur «Ajouter une extension» pour terminer l'installation. Une fois installé, l'icône Diigo apparaîtra dans la barre d'outils de votre navigateur.

Quelles fonctionnalités l'extension Diigo Chrome offrent-elles?

L'extension Diigo Chrome offre une variété de fonctionnalités pour améliorer votre expérience de navigation. Ceux-ci incluent la possibilité de mettre en évidence le texte sur les pages Web, d'ajouter des notes collantes, d'enregistrer des pages pour la lecture hors ligne et de mettre en signet les pages pour un accès facile plus tard. Vous pouvez également organiser vos signets en listes ou balises, et les partager avec d'autres.

Comment utiliser l'extension Diigo Chrome pour mettre en surbrillance le texte?

Pour mettre en surbrillance le texte à l'aide de l'extension Diigo Chrome,, Tout d'abord, sélectionnez le texte que vous souhaitez mettre en surbrillance. Ensuite, cliquez avec le bouton droit et choisissez «Diigo: surlignez» dans le menu contextuel. Le texte sélectionné sera mis en évidence en jaune. Vous pouvez également modifier la couleur de surbrillance en cliquant sur l'icône Diigo dans votre barre d'outils et en sélectionnant 'Highlight'> 'Color'.

Comment ajouter une note collante à l'aide de l'extension Diigo Chrome?

Pour ajouter une note collante, d'abord, sélectionnez le texte où vous souhaitez ajouter la note. Cliquez avec le bouton droit et choisissez «Diigo: Ajoutez une note collante». Une fenêtre contextuelle apparaîtra où vous pourrez taper votre note. Cliquez sur «publier» pour enregistrer la note. La note apparaîtra comme une petite icône à côté du texte sélectionné. Souvrez sur l'icône pour afficher la note.

Comment puis-je enregistrer une page pour la lecture hors ligne à l'aide de l'extension Diigo Chrome?

Pour enregistrer une page pour la lecture hors ligne, cliquez sur l'icône Diigo dans Votre barre d'outils et sélectionnez «Lire plus tard». La page sera enregistrée dans votre bibliothèque Diigo et peut être accessible même lorsque vous êtes hors ligne.

Comment puis-je mettre en signet une page à l'aide de l'extension Diigo Chrome?

Pour mettre en signet une page, cliquez sur Sur l'icône Diigo dans votre barre d'outils et sélectionnez «Bookmark». Une fenêtre contextuelle apparaîtra où vous pouvez ajouter une description, des balises et choisir une liste pour ajouter le signet. Cliquez sur «Enregistrer» pour enregistrer le signet.

Comment organiser mes signets à l'aide de l'extension Diigo Chrome?

Vous pouvez organiser vos signets en listes ou balises. Pour ajouter un signet à une liste, cliquez sur l'icône Diigo dans votre barre d'outils et sélectionnez «Bookmark». Dans la fenêtre contextuelle, choisissez une liste dans le menu déroulant «Ajouter à la liste». Pour ajouter une balise, tapez la balise dans le champ «Tags».

Comment partager mes signets à l'aide de l'extension Diigo Chrome?

Pour partager un signet, cliquez sur l'icône Diigo dans votre barre d'outils et sélectionnez «Bookmark». Dans la fenêtre contextuelle, cliquez sur l'onglet «Partager». Vous pouvez choisir de partager le signet par e-mail, ou copier le lien pour le partager par d'autres moyens.

Comment créer une touche à la base pour ouvrir Diigo dans Chrome?

Pour créer une cure-lodage, Accédez à «chrome: // extensions / raccourcis» dans votre navigateur Chrome. Trouvez l'extension Diigo et cliquez sur le lien «Raccourcis clavier». Dans la fenêtre pop-up, vous pouvez définir une touche de piste pour ouvrir Diigo.

Comment mettre à jour l'extension Diigo Chrome?

Pour mettre à jour l'extension Diigo Chrome, naviguer vers 'Chrome: / / Extensions 'dans votre navigateur Chrome. Activez le «mode développeur» en cliquant sur le commutateur à bascule en haut à droite. Ensuite, cliquez sur le bouton «Mettre à jour». Si une mise à jour est disponible, elle sera téléchargée et installée automatiquement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Java vs Javascript: une comparaison détaillée pour les développeursJava vs Javascript: une comparaison détaillée pour les développeursMay 16, 2025 am 12:01 AM

JavaandjavascriptAredistinctLanguages: JavaisUsedFormenterpriseAndMobileApps, tandis que javascriptisforinteractivewebpages.1) javais compilé, statistiquement type, Andrunsonjvm.2)

Types de données JavaScript: Y a-t-il une différence entre le navigateur et les nodejs?Types de données JavaScript: Y a-t-il une différence entre le navigateur et les nodejs?May 14, 2025 am 12:15 AM

Les types de données de base JavaScript sont cohérents dans les navigateurs et Node.js, mais sont gérés différemment des types supplémentaires. 1) L'objet global est la fenêtre du navigateur et global dans Node.js. 2) Objet tampon unique de Node.js, utilisé pour traiter les données binaires. 3) Il existe également des différences dans les performances et le traitement du temps, et le code doit être ajusté en fonction de l'environnement.

Commentaires JavaScript: un guide pour utiliser // et / * * /Commentaires JavaScript: un guide pour utiliser // et / * * /May 13, 2025 pm 03:49 PM

JavascriptUsestwotypesofComments: unique (//) et multi-ligne (//). 1) use // forquicknotesorsings-lineexplanations.2) use // forlongErexPlanationsorcommentingoutblocksofcode.commentsShouldExplatethe'why ', notthewat', et bplacedabovovereLantCodeForCaReric

Python vs JavaScript: une analyse comparative pour les développeursPython vs JavaScript: une analyse comparative pour les développeursMay 09, 2025 am 12:22 AM

La principale différence entre Python et JavaScript est le système de type et les scénarios d'application. 1. Python utilise des types dynamiques, adaptés à l'informatique scientifique et à l'analyse des données. 2. JavaScript adopte des types faibles et est largement utilisé pour le développement frontal et complet. Les deux ont leurs propres avantages dans la programmation asynchrone et l'optimisation des performances, et doivent être décidées en fonction des exigences du projet lors du choix.

Python vs JavaScript: Choisir le bon outil pour le travailPython vs JavaScript: Choisir le bon outil pour le travailMay 08, 2025 am 12:10 AM

Que ce soit pour choisir Python ou JavaScript dépend du type de projet: 1) Choisissez Python pour les tâches de science et d'automatisation des données; 2) Choisissez JavaScript pour le développement frontal et complet. Python est favorisé pour sa bibliothèque puissante dans le traitement et l'automatisation des données, tandis que JavaScript est indispensable pour ses avantages dans l'interaction Web et le développement complet.

Python et Javascript: comprendre les forces de chacunPython et Javascript: comprendre les forces de chacunMay 06, 2025 am 12:15 AM

Python et JavaScript ont chacun leurs propres avantages, et le choix dépend des besoins du projet et des préférences personnelles. 1. Python est facile à apprendre, avec une syntaxe concise, adaptée à la science des données et au développement back-end, mais a une vitesse d'exécution lente. 2. JavaScript est partout dans le développement frontal et possède de fortes capacités de programmation asynchrones. Node.js le rend adapté au développement complet, mais la syntaxe peut être complexe et sujet aux erreurs.

Core de JavaScript: est-il construit sur C ou C?Core de JavaScript: est-il construit sur C ou C?May 05, 2025 am 12:07 AM

Javascriptisnotbuiltoncorc; il est en interprétéLanguageThatrunSoninesoftenwritteninc .1) javascriptwasdesignedasalightweight, interprété de LanguageForwebbrowsers.2) EnginesevolvedFromSimpleInterpreterstoJitCompilers, typicalinc, impropringperformance.

Applications JavaScript: de front-end à back-endApplications JavaScript: de front-end à back-endMay 04, 2025 am 12:12 AM

JavaScript peut être utilisé pour le développement frontal et back-end. L'endouage frontal améliore l'expérience utilisateur via les opérations DOM, et le back-end gère les tâches du serveur via Node.js. 1. Exemple frontal: modifiez le contenu du texte de la page Web. 2. Exemple backend: Créez un serveur Node.js.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
<🎜> Obscur: Expedition 33 - Comment obtenir des catalyseurs de chrome parfaits
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.