Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№113-09-2016 12:55:06

Доктор ТуамОсес
Участник
 
Группа: Members
Зарегистрирован: 21-04-2014
Сообщений: 220
UA: Firefox 35.0

Помогите пофиксить багу в аддоне in10Search

Давно пользуюсь таким аддоном как in10search

Он, короче, добавляет в контекстное меню правой кнопки мыши для выделенного текста пункт "Result for ...". При клике по нему разворачивается меню следующего уровня в котором видны 4 топовых результата выдачи гугла для выделенного текста.

Очень удобно. Не надо лезть в гугл, чтобы узнать значение непонятного тебе термина, фразы.
Достаточно их выделить мышкой и посмотреть выдачу гугла в контекстном меню.


Только вот с недавнего времени (наверное с полгода, может чуть больше) он стал глючить.
Это проявляется в том, что пункт меню "Result for ..." появляется примерно на полсекунды и исчезает.
И даже когда успеваешь по нему кликнуть - ничего не происходит. Просто пункт меню "схлопывается" и все.

Я это связываю с тем, что гугл поменял URL-ы своих сервисов.
Т.е. (как мне кажется - может я ошибаюсь) дело не в Firefox. Так как глюки начались при том, что я ничего не менял в Firefox. Ничего не устанавливал, не удалял, не обновлял.

Пробовал сам расковырять XPI-файл расширения и поправить JS-ы - ничего не вышло.
Я очень плохо разбираюсь в написании расширений.

Помогите разобраться: почему пункт меню "Serach for ..." самопроизвольно "схлопывается".

Да. Firefox у меня версии 35.0.1

Добавлено 13-09-2016 13:16:57
Вот код функции, в которой, как мне кажется, проблема.

Выделить код

Код:

//event called when user right clicks to bring up context menu
in10.contextSearchLoad = function(){

    var g = gContextMenu;
    var gr = document.getElementById('in10ContextMenuLabel');
    var popup = document.getElementById('in10ContextMenu');

    //setup search text
    var t = this.getText().replace(/[\~\!\#\$\%\^\*\:\(\)\<\>\[\]\{\}\;\'\-\=\+\,\?\/\\]/g,' ');

    if (!t && g.onTextInput)
        t=g.target.value.substr(g.target.selectionStart,g.target.selectionEnd-g.target.selectionStart);


    t = in10.trim(t);
    if(t.length>100)
        t = t.substr(0,100).replace(/[^ ]+$/,'');

    //if no text, then hide menu
    if (!t) {
        document.getElementById('in10ContextMenuLabel').setAttribute('hidden','true');
        return;
    }


    gr.setAttribute('hidden','false');

    var tp = t.substr(0,20);
    tp = tp.replace(/^[ \r\n]+/,'');
    if (tp.indexOf(' ')>-1)
        tp=tp.replace(/ [^ ]+$/,'');
    if (!tp) tp = t;
    if (tp!=t)
        tp+='...';

    gr.setAttribute('label', in10.s("results_for")+tp+'"');

    t = encodeURIComponent(t);

    //remove prior
    while(popup.firstChild)
        popup.removeChild(popup.firstChild);
    
    //web 10 results
    var reqUrl;

    reqUrl = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="+t;

    var grUrl = "http://www.google.com/search?q="+t;

    gr.setAttribute('value', grUrl);
    gr.setAttribute('image', "http://www.google.com/favicon.ico");


    //set a placeholder, so we have an item to "add after"
    var ph = document.createElement("menuitem");
    ph.setAttribute("id", "in10-resultMenuPlaceholder");
    popup.appendChild(ph);
    ph.setAttribute('hidden', 'true');

    //launch request
    in10.xhr(reqUrl, function(d){
        in10.contextSearchProcess(d)
    }, null,null,null,null,null);
}

Из-за чего тут может самопроизвольно "схлопываться" пункт меню?

Отредактировано Доктор ТуамОсес (13-09-2016 13:16:57)

Отсутствует

 

№213-09-2016 17:37:51

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Помогите пофиксить багу в аддоне in10Search

Доктор ТуамОсес пишет

Я это связываю с тем, что гугл поменял URL-ы своих сервисов.

Отключил:

"The Google Web Search API is no longer available. Please migrate to the Google Custom Search API (https://developers.google.com/custom-search/)"

Я бы вам поправил, если бы не:

Each Custom Search engine is identified by a unique ID created by combining a user ID with a Custom Search engine ID, separated by a colon, like this:

https://developers.google.com/custom-search/docs/api
А так, без меня, сами регистрируйтесь и получайте ключ.

Отсутствует

 

№313-09-2016 19:48:00

Доктор ТуамОсес
Участник
 
Группа: Members
Зарегистрирован: 21-04-2014
Сообщений: 220
UA: Firefox 35.0

Re: Помогите пофиксить багу в аддоне in10Search

turbot
Спасибо большое за ответ :beer:
Но честно говоря мне грустно.
Придется искать другие аддоны.
Хотя мне пока не попадались такие, которые реализуют подобный функционал.
Ведь в принципе, наверное, можно и без API считать первые 3 результата выдачи поисковика?
Просто в тупую загружая страницу и парся её

Добавлено 13-09-2016 19:49:22
А у янекса такой API есть?
Бесплатный.

Отредактировано Доктор ТуамОсес (13-09-2016 19:49:22)

Отсутствует

 

№413-09-2016 20:55:33

turbot
Участник
 
Группа: Members
Зарегистрирован: 09-10-2011
Сообщений: 2529
UA: Firefox 51.0

Re: Помогите пофиксить багу в аддоне in10Search

Доктор ТуамОсес пишет

Ведь в принципе, наверное, можно и без API считать первые 3 результата выдачи поисковика?

Это надо все переписывать. Тут я пас. Это уже "просто поправить". Не осилю. Попросите в теме CB, может кто и не поленится.

Бесплатный.

Он и у Гугла бесплатный при

100 queries per day for free

. Про яндекс без понятия.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]