Проблемы Разработки Расширений Google Chromium

Мой основной браузер — Opera, для которого изначально были разработаны дополнения, а затем перенесены в Google Chromium (собран из репозитория Ubuntu).

Я пользуюсь веб-версией твиттера и меня она практически полностью устраивает, но было решено исправить несколько мелких нюансов.

Далее вы сможете увидеть, какие проблемы возникли при «портировании» расширения.

Во-первых, я хотел бы отправлять статусы с помощью CTRL + ENTER. Во-вторых, старый стиль ретвитов(RT имя пользователя текст).



var pr_key = 0; function submit_status(event) { alert(''); } (function () { try { submit_status = function (event) { if(pr_key == 17 && event.keyCode == 13) { $('#status_update_form').

submit(); } pr_key = event.keyCode; } jQuery('#status').

attr('onKeyDown', 'submit_status(event);'); } catch(e) { } })();

Первый был реализован довольно быстро с помощью JS. Использовать сторонние библиотеки мне не хотелось, поэтому делал это небольшими костылями.

В Opera все работало, а затем пришло время создать расширение для Chromium. В манифест.json добавили jQuery, добавили и сам twi JS, и начались тесты.

И тут же всплыли все проблемы, как оказалось в Chromium были проблемы с видимостью области определения функций; onKeyDown просто не увидел функцию submit_status().

Проблема решилась добавлением в код твиттера элемента скрипта.



// ==UserScript== // @include x.com* // @include www.x.com* // ==/UserScript== (function () { jQuery('#home').

append( ''); jQuery('#status').

attr('onKeyDown', 'submit_status(event);'); })();

Выше приведен полный листинг финального сценария для Opera и Chromium. Хочу отметить еще один момент:

'setTimeout("update_retweet();", 5000);' +

Используется для вызова update_retweet, т.к.

со своего расширения его тоже не получится вызвать.

Еще есть возможность указать src для скриптов на своем (?! каком-то code.google.com) ресурсе, это тоже выход, но у меня он не сработал.

Теги: #Google Chrome #Twitter #расширения #Чулан

Вместе с данным постом часто просматривают: