Обновленный ответ:
Так как указано в комментариях, это, очевидно, использует собственный обмен сообщениями; что я не могу понять, это то, что они делают. Проект утверждает, что он является открытым исходным кодом (и GPL), но источник не найден в связанном репо; последнее совершение - это 13 декабря, что не так полезно.
От взгляда на код расширения я хотел бы угадать, что они каким-то образом используют какой-либо интересный хакер, используя системные API, которые могут не поддерживаться долгосрочными или некорректными API-интерфейсами Chrome; они устанавливают заголовок документа, который содержит «ietaba:» + идентификатор закладки IE, а затем отправляет сообщение на основной узел сообщений с этой информацией.
chrome.tabs.getCurrent(function(tab) {
// We can't attach if we don't have a window id or aren't active
if (!tab.active || !this.windowId) {
this.restoreTitle();
return;
}
// Remember the title change is asynchronous, so don't keep changing it or the helper
// will never find it. We may have to retry several times to find the window after
// a single title change
if (document.title.indexOf('ietaba:') == -1) {
this.realTitle = document.title;
document.title = 'ietaba:' + Background.getNextIETabId();
}
var msg = {
type: 'ATTACH',
tabTitle: document.title,
innerWidth: this.getIEWidth(),
innerHeight: this.getIEHeight()
}
NativeHost.postMessage(msg);
}.bind(this));
То, что я не могу понять, заключается в том, как они могут использовать это для прикрепления к нему; они, похоже, как-то получают HWND для этого раздела. Это заставляет меня задаться вопросом, предоставил ли Google им специальные API-интерфейсы или нашел ли они какой-нибудь умный взлом. Это кажется немного подозрительным, что проект «GPL» не освобождает свой код ...
UPDATE
После этого еще немного покопаться, я обнаружил, что вы можете перечислить открытый HWNDs в системе получить HWND для вкладки, которую они запускают; они устанавливают уникальный идентификатор табуляции в заголовке, поэтому они просто перечисляют HWND, пока не найдут тот, который им нужен. После этого я предполагаю, что они просто создают элемент управления activex в этом месте.
Это говорит о том, что это похоже на что-то, что может сильно сломаться, если Chrome изменит неправильные вещи. Я также не вижу, как можно легко настроить таргетинг на определенную часть страницы; вам придется рисовать в определенном регионе, и было бы сложно получить все как можно лучше. Я не думаю, что хочу сделать это таким образом, но я вижу, как они должны это делать.
Кому-то следует прикрыть их, чтобы освободить их код, поскольку они нарушают GPL, не делая этого.
ДАЛЕЕ UPDATE
Просто, чтобы проверить это, я попытался изменить «ATTACH» событие для присоединения к «Developer Tools» вместо - в результате у меня теперь есть окно разработчик инструментов хром открытый с паутиной в нем.
Смешная вещь, она использует собственные сообщения. – Xan
здесь - https://getsatisfaction.com/ietab/topics/chrome_canary_has_not_worked_with_ietab_for_the_last_week Они говорят о swinging NPAPI для Native Messaging. Кроме того, когда я проверял файлы расширения, есть множество функций от Native Messaging и есть exe-файл, который, вероятно, должен регистрировать хост и запускать IE-движок. – MartySK
Вы правы; Я нашел дополнительную информацию и разместил ее выше – taxilian