Les scripts de Maxthon v2.0
Types de Plugin de Maxthon
Le type de Plugin de Maxthon est défini par ModuleType (Script, HTML, COM et EXE) et Type (Button, Sidebar, Toolbar, COM_Button, MHO, MHO_Button) simultanément :
Button SideBar Toolbar COM_Button MHO MHO_Button Script oui oui HTML oui EXE oui COM oui oui oui oui oui oui COM_Global oui oui oui oui
1. ModuleType - Script, HTML, EXE, COM et COM_Global
Script - Le Plugin Script peut être de type button, qui exécute un script lorsqu'il est cliqué. le script peut être dans un langage supporté par IE, comme le JavaScript ou le vbscript. Maxthon 2.0 supporte le mscript qui exécute l'environnement (plus de détails ci-après). Le Script peut également être de type sidebar, qui affiche un fichier HTML dans la barre latérale.
HTML - Un nouveau type de Plugin pour Maxthon 2.0 seulement. Le Plugin de type HTML est similaire au Plugin Script Sidebar dans sa nature. La différence majeure est que le Plugin Script Sidebar est affiché dans la barre latérale de Maxthon alors que le Plugin HTML est affiché comme un bouton dans la barre des Plugins ou n'importe quelle barre d'outils (barre d'état, barre des menus, barre des onglets, barre d'adresses...).
EXE - Le Plugin EXE sera affiché comme un bouton sur la barre des Plugins. Le Plugin EXE peut être n'importe quel fichier exécutable. Maxthon peut passer plusieurs paramètres au fichier exécutable comme l'URL de la page Web en cours ou le "handle" de la fenêtre de Maxthon.
COM - Un plugin Com peut créer une intance de l'interface de IObjectWithSite, faisant passer le pointeur de la page courante de IWebBrowser2 à sa fonction IObjectWithSite::SetSite et appelant ensuite sa fonction IOleCommandTarget::Exec. Ce qui permet d'interagir avec les évènements/opérations/activités du navigateur et le Document Object Model.
COM_Global - Les Plugins COM_Global sont créés seulement une fois au démarrage de Maxthon, et sont détruits à la fermeture de Maxthon. Les Plugins COM_Global sont souvent pour les fonctions de navigation qui ne sont pas en relation avec le Document Object Model. Ainsi, les Plugins COM_Global peuvent implémenter une fonction PutMaxCommander à travers l'interface IDispatch pour obtenir un objet du Plugin de Maxthon, qui peut être utilisé de la même façon qu'un objet externe de Maxthon pour les Plugins script (cf. les commandes ci-dessous des Plugins script), pour interagir avec le Document Object Model des onglets et Maxthon.
Notez que Maxthon 2.0 est "multithread" (un "thread" pour chaque onglet). Les Plugins développés pour une interaction approfondie avec le Document Object Model des onglets doivent être développés en COM (par onglet) au lieu de COM_Global ainsi ils pourront fonctionner plus efficacement avec le même "thread" d'un onglet individuel.
2. Type - Button, SideBar, Toolbar, COM_Button, MHO, and MHO_Button
Button - Un bouton sera ajouté sur la barre des Plugins. L'opération spécifiée par le script (Plugin Script), l'exécutable (Plugin EXE), la DLL (Plugin COM) sera exécutée lorsque le bouton sera cliqué. En option, Les Plugins de bouton peuvent implémenter un menu déroulant pour le Plugin. Un Plugin de bouton COM doit implémenter l'interface IOleCommandTarget pour recevoir le clic du bouton. Si un menu est implémenté, la fonction IOleCommandTarget_Exec recevra un id de commande de 1 lorsque le bouton est cliqué, et un id de commande de 2 lorsque le premier item du menu est cliqué, et ainsi de suite. Un Plugin de bouton COM est créé lorsque le bouton est cliqué et est détruit lorsque l'onglet est fermé (comme IE7).
SideBar - Un bouton sera ajouté à la barre latérale, et un élément sera ajouté au menu principal > Affichage > Barre latérale. Lorsque le bouton ou l’élément du menu est cliqué, la barre latérale de Maxthon s'ouvrira et affichera le fichier HTML spécifié par le Plugin (Plugin script), ou la fenêtre spécifiée par le Plugin à travers l'interface IDeskBand (Plugin com ou com_global).
Toolbar - Les Plugins de barre d'outils doivent être écrits en COM. Une nouvelle barre d'outils sera ajoutée, qui pourra être affichée ou cachée à partir du menu principal > Affichage > Barre d'outils. Un Plugin de barre d'outils doit implémenter l'interface IDeskBand pour spécifier la fenêtre de la barre d'outils. Les Plugins de barre d'outils peuvent être COM ou COM_Global. Les Plugins de barre d'outils COM sont affectés à un onglet lorsque l'onglet est crée, et sont détruits lorsque l'onglet est fermé. Cela permet l'adoption de certaines barres d'outils d'IE dans Maxthon en l'état ou avec un minimum de changements. Les barres d'outils COM_Global sont créés uniquement au démarrage de Maxthon, et sont détruites à la fermeture de Maxthon. Si une barre d'outils COM_Global implémente l'interface IObjectWithSite, elle peut obtenir le pointeur sur webbrowser de l'onglet actif à travers la fonction SetSite. Lorsque l'onglet actif est modifié, SetSite sera appelé de nouveau pour passer le pointeur sur webbrowser du nouvel onglet actif.
COM_Button - Les Plugins COM_Button sont identiques au Plugins de barre d'outils, à l'exception près que les Plugins COM_Button sont affichés dans Maxthon comme un bouton, et non pas comme une barre d'outils. Un Plugin COM_Button a la même flexibilité de positionnement dans l'interface de Maxthon que les autres boutons, mais il supporte également la richesse de l'interface d'une barre d'outils par rapport à celle d'un simple bouton.
MHO - Un Plugin MHO est identique au Browser Helper Object d'IE et doit être écrit en COM. Les Plugins MHO sont créés par onglet lorsque l'onglet est créé, et sont détruits lorsque l'onglet est fermé. Les Plugins MHO doivent implémenter l'interface IObjectWithSite pour obtenir un pointeur sur webbrowser de l'onglet pour interagir avec le DOM. Les Plugins MHO n'ont pas d'interface.
MHO_Button - Le Plugin MHO est une combinaison d'un Plugin MHO et d'un Plugin bouton COM. Les Plugins MHO_Button sont créés par onglet lorsque l'onglet est créé, et sont détruits lorsque l'onglet est fermé. En plus, une instance de Plugin MHO_Button sera créée lorsque son bouton est cliqué, et l'instance sera détruite lorsque l'opération est terminée. Le Plugin MHO_Button ajoute essentiellement une interface bouton au Plugin MHO.
Créer un Plugin pour Maxthon
Composants majeurs d’un Plugin de Maxthon
Un Plugin de Maxthon contient généralement les fichiers suivants :
Fichiers INI – Le fichier plugin.ini est nécessaire pour tous les Plugins de Maxthon. Il définit plusieurs attributs du Plugin.
Fichiers HTML/DLL/EXE file – Le composant principal nécessaire à tous les Plugins de Maxthon spécifiant l'opération à réaliser ou le contenu à afficher.
Fichier Icônes – L'icône du bouton (*.ICO) nécessaire aux Plugins bouton et barre latérale. Les plugins COM ou EXE peuvent utiliser des icones insérées dans leur code.
Config.html – Un fichier HTML optionnel pour être utilisé avec les Plugins de type Script et HTML comme boîte de dialogue de configuration.
Fichier plugin.ini
[General] nécessaire à la définition de plusieurs attributs du plugin
Name= nom du Plugin
Author= nom de l'auteur
Version= Version du Plugin
ModuleType= Peut être Script, HTML, EXE, COM, or COM_Global
FileName= Peut-être un fichier HTML (Plugins Script et HTML), un fichier DLL (Plugins COM) ou un fichier EXE (Plugins EXE)
Comments= La description affichée dans les options du Plugin et/ou l'info-bulle du Plugin de type Button
Type= Peut être M2Plugin_Button, M2Plugin_Sidebar, M2Plugin_Toolbar, M2Plugin_COM_Button, M2Plugin_MHO, ou M2Plugin_MHO_Button
IdealSize= La largeur et la hauteur de l'interface du Plugin (ex. 120 20, pour un Plugin HTML seulement)
IdealSizeVertical= La largeur et la hauteur de l'interface du Plugin lorsqu'il est positionné verticalement (ex 120 20, optionnel pour un Plugin HTML)
Icon= L'icône du bouton pour les Plugins de type Button ou Sidebar
HotIcon= L'icône du bouton lorsque le bouton du Plugin est survolé
CLSID= Le CSLID pour les Plugins de type COM et COM_Global
DefaultLocation= Optionnel, défini la localisation par défaut de l'icône du Plugin, peut être None (dans la barre des Plugins, mais non affichée après l'installation, l'utilisateur peut afficher le bouton à partir du menu Afficher ou masquer des boutons), MenuBar, ToolBar, ou StatusBar. S’il n'est pas définit, le Plugin sera affiché dans la barre des Plugins. Pour le Plugin de type Button et pour Maxthon 2.0.5 ou supérieur.
StartAfterPageDoneURL= Optionnel, définit les adresses pour lesquelles le Plugin doit démarrer automatiquement, supporte les caractères joker, et on peut utiliser "|" pour séparer les adresses, ex. *maxthon.com*|forum.maxthon.cn*. Si il n'est pas défini, le Plugin démarrera pour toutes les adresses, équivalent à *. Pour les Plugins de types Script et Button et pour Maxthon 2.0.5 ou supérieur.
StartAfterPageDoneURLExclude= Optionnel, définit les adresses pour lesquelles le Plugin ne doit pas démarrer automatiquement, a une priorité supérieure à startAfterPageDoneUrl. Utilise le même format que startAfterPageDoneUrl ex. forum.maxthon.cn/index.php?|*.maxthon.cn/index.php?showtopic*. Pour les Plugins de types Script et Button et pour Maxthon 2.0.5 ou supérieur.
[MyIE2Buttons] Optionnel pour définir le menu déroulant pour les Plugins de types Button et MHO_Button
Count= Le nombre d'éléments du menu déroulant
Name1= Le nom du 1er élément du menu déroulant
FileName1= Le nom du fichier, ou le nom du fichier + les paramètres pour les Plugins de type EXE, du 1er élément du menu déroulant. Pour les Plugins de type COM Button et COM MHO_Button, mettre un nom arbitraire et distinct, ex. 1 pour FileName1 et 2 pour FileName2 etc.
Installation d'un Plugin de Maxthon
Les Plugins de Maxthon sont installés dans le répertoire "Plugin" du dossier d'installation de Maxthon. Chaque Plugin possède son propre dossier dédié qui contient le fichier plugin.ini et les autres fichiers nécessaires et/ou sous-dossiers.
Un Plugin terminé, comprenant le dossier du Plugin et tous les fichiers et/ou sous-dossiers peut-être compressé dans un fichier ZIP (*.zip) pour être déployé.
Maxthon 2.0
Maxthon 2.0 supporte un pack d'installation M2P de plugins (essentiellement un *.zip renommé en *.m2p. Le Plugin sera installé lorsque le fichier M2P est double-cliqué ou par glisser/déplacer dans la fenêtre de Maxthon.
Maxthon 1.X
Les Plugins sont installés dans Maxthon 1.x en suivant cette procédure :
1. Fermer Maxthon
2. Extraire le fichier zip du Plugin dans le dossier "Plugin" du répertoire d'installation de Maxthon. En général, le fichier plugin.ini devrait se trouver dans C:\Program Files\Maxthon\Plugin\NewPlugin\plugin.ini
3. Ouvrir Maxthon, la fenêtre d'installation du Plugin devrait s'afficher
4. Confirmer l'installation du nouveau plugin
Commandes des Plugins Script de Maxthon
Maxthon propose plusieurs commandes pour améliorer la capacité des Plugins Script. Ces commandes peuvent être exécutées par l'intermédiaire de l'objet window.external. Certaines commandes nécessitent un ID de sécurité généré par Maxthon pour pouvoir s'exécuter.
Comment obtenir l'ID de sécurité
1. Les Plugins Script de type Button peuvent utiliser "%max_security_id" pour l'ID de sécurité
2. Les Plugins Script de type Sidebar et les Plugins HTML de type Button doivent charger "max.src", un script généré par Maxthon. Ensuite "max_security_id" peut être utilisé :
<script src=max.src></script>
Référence des commandes des Plugins de Maxthon
Sauf indication contraire, les commandes suivantes sont applicables pour Maxthon 2.0 et Maxthon 1.X :
1. max_version - retourne le numéro de version de Maxthon
Exemple :
alert(external.max_version);
2. max_language_id - retourne l'ID de langue de Maxthon
Exemple :
alert(external.max_language_id);
Note : Maxthon 2.0 et Maxthon 1.X ont un format d'ID de langue différent
3. tab_count - retourne le nombre d'onglets ouverts dans Maxthon
Exemple :
alert(external.tab_count);
4. cur_sel - retourne l'index de l'onglet en cours de Maxthon
Exemple :
alert(external.cur_sel);
5. m2_plugin_folder( security_id , plugin_name ) - retourne le chemin du dossier du Plugin spécifié
Exemple :
alert(external.m2_plugin_folder( %max_security_id , 'ViewSource!'));
6. m2_run_cmd( security_id , command_id ) - exécute l'ID de la commande spécifiée
Exemple :
external. m2_run_cmd( %max_security_id , 32772 ));
Note: Maxthon 2.0 et Maxthon 1.X ont des ID de commande différents. Les ID des commandes se trouvent dans le fichier langue de Maxthon.
7. get_tab( security_id , tab_index ) - retourne l'objet Windows de l'onglet spécifié
Exemple :
var oWin=external.get_tab(%max_security_id, 0); alert(oWin.document.URL);
8. activate_tab( security_id , tab_index ) - active l'onglet spécifié
Exemple :
external.activate_tab(%max_security_id, 0);
9. close_tab( security_id , tab_index ) - ferme l'onglet spécifié
Exemple :
external.close_tab(%max_security_id, 0);
10. readFile( security_id, plugin_name, file_name) - lit le contenu du fichier texte spécifié
Example :
var sText=external.readFile(%max_security_id, 'ViewPage', 'readme.txt'); alert(sText);
11. writeFile( security_id, plugin_name, file_name, content ) - écrit le contenu dans le fichier texte spécifié
Exemple :
external.writeFile(%max_security_id, 'ViewPage', 'test.txt', 'Ceci est le contenu du fichier');
12. m2_readIni( security_id, plugin_name , file_name , section_name , key , default_value) - lit les données du fichier INI spécifié
Exemple :
var sDownloadTool=external.m2_readIni(%max_security_id, 'ViewPage', 'plugin.ini', 'Settings', 'Tool', ); alert(sDownloadTool);
13. m2_writeIni( security_id , plugin_name , file_name , section_name , key , value ) - écrit les données dans le fichier INI spécifié
Exemple :
external.m2_writeIni(%max_security_id, 'ViewPage', 'test.ini', 'Config', 'height', '100px');
14. max_modelessDialog( security_id , url , option , attr , window ) - retourne une page de dialogue en mode Web
Exemple :
var oDialog= external.max_modelessDialog( %max_security_id , 'blank.html', window , , window ); var oDoc=oDialog.document; oDoc.write('Testing'); oDoc.close();
15. max_activex(security_id ,program_id) - retourne l'objet ActiveX spécifié
Exemple :
var oWSH=external.max_activex(%max_security_id, 'WScript.Shell'); oWSH.run('notepad.exe');
16. m2_search_text(security_id) - retourne le texte de la barre de recherche
Exemple :
alert(m2_search_text(%max_security_id));
17. max_callback(event_name) - une fonction qui est exécutée lorsque certains événements de Maxthon se produisent (pour les Plugins HTML de type Button et les Plugins Script de type Sidebar)
Les Plugins HTML de type Button et les Plugins Script de type Sidebar peuvent utiliser la fonction max_callback pour réagir à certains événements de Maxthon comme le changement d'onglet.
Exemple :
function max_callback(x){ if(x=='tab_change') alert('L'onglet en cours a changé.'); }
En testant le paramètre de la fonction max_callback, le Plugin peut récupérer les événements suivants :
Plugins HTML de type Button
tab_change – après que l'onglet en cours ait changé
document_Complete - après que l'onglet en cours soit entièrement chargé
self_destroy - lorsque le HTML est déchargé, normalement lorsque Maxthon est fermé
Plugins Script de type Sidebar
sidebar_tab_change - après changement de l'onglet actif
sidebar_activate - lorsque le Plugin Sidebar est activé
sidebar_deactivate - lorsque le Plugin Sidebar est désactivé
sidebar_unload - lorsque le Plugin Sidebar est déchargé (Maxthon est fermé)
18. max_getObj (pour Maxthon 2.0 seulement) - retourne plusieurs objets de Maxthon :
Info - information générale sur Maxthon
Adhunter – à propos du tueur de pubs
FavManager – à propos des Favoris
RssManager – à propos des flux RSS
PluginManager - à propos des Plugins, pour Maxthon 2.0.5 ou supérieur
Exemple :
var oInfo=external.max_getObj(%max_security_id, 'info');
L'objet Info supporte les propriétés et méthodes suivantes :
Propriétés :
fileProxy - en lecture seule, retourne le chemin du document de configuration du Proxy utilisateur en cours.
Exemple :
var oInfo=external.max_getObj(%max_security_id, 'info'); alert(oInfo.fileProxy);
folderUser - en lecture seule, retourne le chemin du dossier du profil de l'utilisateur en cours
Exemple :
var oInfo=external.max_getObj(%max_security_id, 'info'); alert(oInfo. folderUser);
Méthodes :
getFolderPluginData(plugin_name) - obtient le chemin du dossier de stockage des données d'un Plugin pour l'utilisateur en cours et le Plugin indiqué
Exemple :
var oInfo=external.max_getObj(%max_security_id, 'info'); alert(oInfo.getFolderPluginData('ViewSource!'));
L'object AdHunter supporte les méthodes suivantes :
Méthodes :
reloadFilter(filter_name) – recharge le filtre de Maxthon spécifié (actuellement seulement les filtres de contenu) après avoir modifié le filtre en question
Exemple :
var oAdHunter=external.max_getObj(%max_security_id, 'AdHunter'); oAdHunter.reloadFilter('content');
enableFilter(filter_name, bEnable) – active ou désactive le filtre de 'contenu' ou de 'Popup' de Maxthon
Exemple :
var oAdHunter=external.max_getObj(%max_security_id, 'AdHunter'); oAdHunter.enableFilter ('content', false);
L'objet PluginManager supporte les méthodes suivantes :
getPluginFolder - retourne le chemin du dossier principal du Plugin de Maxthon
Exemple :
var oPluginManager=external.max_getObj(%max_security_id, 'PluginManager'); alert(oPluginManager.getPluginFolder)
getCount - retourne le total de tous les Plugins installés, qu'ils soient activés ou non
Exemple :
var oPluginManager=external.max_getObj(%max_security_id, 'PluginManager'); alert(oPluginManager.getCount)
getList - retourne une liste qui contient des informations comme le nom, l'auteur, etc. de tous les Plugins
Exemple :
var oPluginManager=external.max_getObj(%max_security_id, 'PluginManager'); alert(oPluginManager.getList)
getPlugin(Index) - Index est un nombre, retourne les objets du Plugin correspondant
Exemple :
var oPluginManager=external.max_getObj(%max_security_id, 'PluginManager'); var oPlugin=oPluginManager.getPlugin(0);
L'objet Plugin retourné de getPlugin(Index) supporte les propriétés et méthodes suivantes :
Propriétés :
title - lecture seule, retourne le nom du Plugin
Exemple :
alert(oPlugin.title);
folderName - lecture seule, retourne le nom du dossier du Plugin
Exemple :
alert(oPlugin.folderName);
fullPath - lecture seule, retourne le chemin complet du dossier du Plugin
Exemple :
alert(oPlugin.fullPath);
enable - lecture/écriture, retourne ou définit si le Plugin est actif
Exemple :
oPlugin.enable=false; alert(oPlugin.enable); oPlugin.enable=true; alert(oPlugin.enable);
startAfterPageDone - lecture/écriture, retourne ou définit si le Plugin est en démarrage automatique
Exemple :
oPlugin.startAfterPageDone = true; alert(oPlugin.startAfterPageDone); oPlugin.startAfterPageDone = false; alert(oPlugin.startAfterPageDone);
startAfterPageDoneUrl - lecture/écriture, retourne ou définit l'adresse pour laquelle le Plugin sera démarré automatiquement
Exemple :
oPlugin.startAfterPageDoneUrl='*maxthon.com*|*maxthon.cn*'; alert(oPlugin.startAfterPageDoneUrl);
Mêthodes :
config() - ouvre la boîte de dialogue de configuration du Plugin (config.html)
Exemple :
oPlugin.config();
remove() - supprime le Plugin
Exemple :
oPlugin.remove();
Mscript
Maxthon 2.0 supporte des mscripts personnalisés en plus des scripts pour les Plugins de type Button. Contrairement aux scripts normaux, les mscripts ne sont pas exécutés sur des pages Web ,ainsi les mscripts ne sont pas sujets aux restrictions de sécurité imposées aux scripts normaux,et on ne doit donc pas craindre qu'ils soient exploités par des pages Web. Les mscripts peuvent grandement améliorer les fonctionnalités des Plugins car ils peuvent fonctionner malgré la désactivation des scripts classiques et aussi accéder aux contenus des différentes frames d'une page web même si elles ne sont pas dans le même domaine. Pour utiliser mscript dans un Plugin de type Button, remplacez la balise <script...> par <mscript...>
Exemple - le Plugin de type Button peut désactiver les scripts dans la page en cours en modifiant le contrôle de contenu de Maxthon :
<script language="javascript"> external.m2_run_cmd(%max_security_id, 33175); </script>
Mais après que les scripts aient été désactivés, le Plugin ne peut plus fonctionner. Ainsi, il ne pourra plus réactiver les scripts dans la page en cours. Au contraire, le Plugin mscript suivant peut fonctionner avec les scripts désactivés, ainsi il pourra réactiver les scripts dans la page en cours.
<mscript language="javascript"> external.m2_run_cmd(0, 33175); </script>
Notez qu'un nombre arbitraire peut être utilisé comme %max_security_id lorsque le mscript est utilisé.