2010-11-30 34 views
0

Je dois trouver un moyen d'installer des plug-ins spécifiquement pour Safari sur Mac. Si je copie les fichiers .plugin dans le dossier Internet Plug-ins, ils seront également détectés par Firefox et Google Chrome lors de leur exécution.Comment détecter UserAgent dans un plug-in NPAPI avant qu'il ne soit enregistré par le navigateur?

Pour éviter cela, j'utilisais l'appel API NP_UserAgent pour déterminer l'agent utilisateur, et quitter si ce n'était pas Safari. Cependant, les plug-ins sont toujours enregistrés par Google Chrome et Firefox. Est-il possible de faire la même chose sans que le navigateur enregistre le plug-in?

Répondre

2

Si vous écrivez un plugin NPAPI, il devrait fonctionner dans n'importe quel navigateur. Pouvez-vous expliquer pourquoi vous essayez d'empêcher les utilisateurs utilisant d'autres navigateurs d'utiliser le plugin? Selon le besoin sous-jacent, il peut y avoir une meilleure approche. (Par exemple, si cela doit fonctionner avec une extension Safari, tout ce que vous avez à faire est que votre extension utilise un type MIME que seul votre plugin gère, et peu importe si les autres navigateurs détectent le plugin car il ne sera jamais instancié).

Souhaitez-vous cibler uniquement Safari ou tout navigateur utilisant le framework WebKit d'Apple? Si ce dernier, vous pouvez écrire un WebKit plugin au lieu d'un plugin NPAPI.

+0

Merci @smorgan ... Je pense que c'est comme ça que je vais aller de l'avant. Oui, votre supposition est tout à fait exacte ... Les plug-ins fonctionnent en conjonction avec une extension Safari. C'est en fait une extension existante pour Firefox et Chrome et j'essaye de la porter sur Safari. Oui si vous l'aimez :) http://www.cloudmagic.com/ – themoondothshine

0

Une des solutions possibles est de détecter le navigateur avec JavaScript et d'insérer la balise <object> dans la page HTML seulement si c'est Safari. Mais bien sûr, cela n'empêche pas l'enregistrement du plugin.

Une autre façon est d'écrire le plugin WebKit pour Safari. C'est même facile à implémenter que NPAPI.