Я хочу делать надстройки/расширения для браузера, какой язык программирования мне нужно выучить?

Какие языки программирования мне нужно выучить, чтобы создавать надстройки/расширения для всех существующих браузеров?

Мне сказали, что это Javascript? Заранее спасибо.


person Imran    schedule 18.12.2009    source источник


Ответы (4)


Однажды я сказал что-то вроде этого об IE:

Сам IE написан на C++ и широко использует COM. Модель расширяемости также основана на COM. По моему опыту, у вас есть следующие компромиссы на выбор:

  1. Чистый C++ и COM. Вы строите все с нуля, включая фабрики классов, регистрацию COM-объектов, реализацию интерфейсов и т. д. Вы тратите дополнительный день или около того на реализацию IUnknown, IClassFactory, IObjectWithSite и т. д., и вам становится трудно понять, как работают IConnectionPoint и IConnectionPointContainer. . Однако теперь вы знаете, как все работает, и ваш проект гораздо проще отлаживать и поддерживать по мере его роста, и вы растете как личность. И я обещаю дать вам полезные ответы, если вы сделаете это таким образом.
  2. Используйте ATL/MFC и напишите его на C++. Вы начнете намного быстрее, потому что все COM-клей и основные интерфейсы реализованы за вас. Обратной стороной является то, что вы дергаете себя за волосы, отлаживая шаблонную слизь в файлах заголовков, которые вы не писали, когда что-то идет не так. Вы испытываете сбои, которые не можете объяснить.
  3. Вы пишете его на C# и имеете всевозможные GAC, версию среды выполнения и другие проблемы. Только с v4 среды выполнения вы можете размещать разные версии параллельно. Вы получаете меньше помощи от форумов, поскольку расширения IE действительно должны быть родными, а не управляемыми. Вы можете написать кучу взаимодействий (или, по крайней мере, того, чего еще нет на pinvoke.net) и удачи в отладке, когда что-то пойдет не так. Кроме того, IE видит все управляемые расширения как mscorewhatever, а не как YourExtension.dll, поэтому пользователи часто путаются в пользовательском интерфейсе управления/надстроек. И Microsoft прямо говорит не писать управляемые расширения оболочки, поэтому вы должны убедиться, что только iexplore.exe загружает ваше расширение, а не explorer.exe. И если вы хотите, чтобы он работал на других платформах, у вас возникнут большие проблемы с его портированием.

Это всего лишь мое мнение, так что не стесняйтесь получить второе.

Что касается Firefox, вы можете написать множество расширений, даже не используя XPCOM. Их основная модель расширяемости — XUL + JavaScript, состоящая из разметки и скриптов. Таким образом можно реализовать 99% всех расширений. Однако есть вещи, которые вы просто не можете сделать в их рамках, например. Cooliris, поэтому вам придется прибегнуть к XPCOM для вызова собственного кода (или NPAPI).

Расширения Chrome также представляют собой Javascript и разметку, но если вы хотите писать плагины для Chrome, которые делают какие-либо нативные вещи, вам нужно использовать NPAPI, который является C API.

Таким образом, вы можете многое охватить с помощью Javascript, XML и HTML, но вам не хватает IE, и вы ограничены в своих возможностях. Если вы хотите пройти весь путь, вам нужно изучить C++ (и понять тонкие различия между C++ и C для NPAPI). Я не рекомендую возиться с подключаемыми модулями браузера на основе C#, несмотря на многочисленные примеры написания панелей инструментов для IE на C#.

person i_am_jorf    schedule 18.12.2009

На самом деле я несколько не согласен с другими ответами, потому что, по моему опыту, выбор языка программирования сам по себе не является ограничением при написании расширения для Mozilla или IE.

IE использует COM, поэтому вы можете использовать C или C++ точно так же, как и языки .NET.

Аналогично, Mozilla использует XPCOM, так что на самом деле вам нужен привязка XPCOM, а не какой-либо конкретный язык.

Я написал расширения для обоих этих браузеров на C++. У меня нет опыта написания расширений для других браузеров.

person Phil Booth    schedule 18.12.2009
comment
Голосую за вас, потому что ваш ответ самый точный. Я думаю, что остальные из нас ответили больше за общий случай и за то, в чем доступно больше всего справочных ресурсов. - person phoebus; 18.12.2009
comment
Мой опыт в основном C# и немного C++ из коллажей. Я хочу создать надстройки для IE, а затем для FireFox. Пожалуйста, дайте мне советы, как начать - person mustafabar; 01.08.2010

Для браузеров на базе Mozilla в первую очередь следует обратить внимание на Javascript (и другие перечисленные технологии здесь).

Для Internet Explorer любой из языков .NET обычно используется для создания подключаемых модулей браузера IE.

person Amber    schedule 18.12.2009
comment
Большинство расширений IE написаны на C или C++ с использованием собственных COM-интерфейсов. В последнее время это изменилось, но это все еще не рекомендуемый подход. - person i_am_jorf; 18.12.2009

Нет единого ответа для всех браузеров, но для браузеров Mozilla, таких как FireFox, вы в первую очередь говорите о JavaScript. Для IE, естественно, это будут языки .NET. Для других браузеров это будет зависеть, но часто это будет некоторый JavaScript с, возможно, небольшим количеством языка, на котором запрограммирован браузер.

Для браузеров Mozilla отличной отправной точкой станет раздел Расширения Центра разработки Mozilla.

person phoebus    schedule 18.12.2009
comment
Нет, управляемые языки не рекомендуются для разработки расширений IE. - person i_am_jorf; 18.12.2009