Pull to refresh

Проблемы разработки Google Chromium Extensions

Reading time2 min
Views502
Моим основным браузером является Opera, под который изначально и разрабатывались дополнения, а потом переносились в Google Chromium(сборка из репозитория Ubuntu). Я пользуюсь веб версией twitter и меня она почти полностью устраивает, но было решено поправить несколько мелких нюансов. Далее можно ознакомиться какие проблемы вылезли при «портировании» extension'а.



Во-первых, хотелось бы отправку статусов по CTRL + ENTER. Во-вторых, старый стиль ретвитов(RT user_name text).

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 и тут пришла пора собрать extension для Chromium. jQuery был добавлен в manifest.json, сам twi JS тоже и начались тесты. И сразу же все проблемы всплыли наружу, как оказалось в Chromium проблемы с видимостью области определения функций, onKeyDown просто не видел функции submit_status(). Проблема была решена добавлением элемента script в код twitter'а.

// ==UserScript==
// @include twitter.com*
// @include www.twitter.com*
// ==/UserScript==

(function () {

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

jQuery('#status').attr('onKeyDown', 'submit_status(event);');

})();


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

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


Использован для вызова update_retweet, т.к. из вашего extension так же не получится вызвать ее.

Есть еще вариант указывать src для скриптов на своей(?! каком-нибудь code.google.com) ресурсе, тоже выход, но мне он не подошел.
Tags:
Hubs:
Total votes 7: ↑5 and ↓2+3
Comments4

Articles