Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2016, 19:09   #1
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию Firefox. JavaScript функция. Почему самопроизвольно "схлопывется" пункт меню?

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

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

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


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

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

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

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

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

Ниже код функции, в которой, как мне кажется, проблема.
Помогите понять: почему самопроизвольно "схлопывается" пункт меню?

Код:
//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);
}
ИсмаилПрокопенко вне форума Ответить с цитированием
Старый 21.09.2016, 23:06   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Багофикс кода, самый древний и стандартный вариант, через функцию alert():
Код:
//event called when user right clicks to bring up context menu
in10.contextSearchLoad = function(){
до этих строк вставляешь
Код:
alert(1);
Если появится окно с единичкой, то пока все путем, скрипт на странице запускается.
Код:
in10.contextSearchLoad = function(){
после этого фигачим еще один алерт, он покажет что событие срабатывает.
Дальше первое, где видно явное закрытие контекстного окна (не уверен, но жопой чую)
Код:
//if no text, then hide menu
    if (!t) {
        document.getElementById('in10ContextMenuLabel').setAttribute('hidden','true');
        return;
    }
перед этим пишем
Код:
alert(!!t);
Если выведет true, то корень зла здесь на 99%, дальше в том же месте смотрим что напишет нам
Код:
alert(t);
Дальше особо не вчитывался, но еще смущает вот этот кусок:
Код:
ph.setAttribute('hidden', 'true');
Поставь перед ним алерт и если до алерта все по плану, а после жопа — проблема в этой строке, там на месте решим.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 06.11.2016, 13:37   #3
ИсмаилПрокопенко
Пользователь
 
Регистрация: 31.07.2016
Сообщений: 25
По умолчанию

Проблема решена.
Правда с отрицательным результатом.
Но "отрицательный результат в науке тоже результат"©
Оказалось Гугл просто сам забанил этот сервис.
Сделал его платным.
Поэтому сервер и давал мне отлуп
ИсмаилПрокопенко вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Использование меню "Удалить","Вставить","Вырезать" в combobox Александр1459 C++ Builder 7 07.05.2016 19:57
Почему при условии "false", трассировка входит в блок "true" KBO Помощь студентам 7 20.03.2016 21:18
Незатираемый пункт меню из "пуск" Alex Cones Помощь студентам 5 22.03.2010 14:42
Почему не работает Case txt Like "текст1", "текст2" Oooleg Microsoft Office Excel 2 15.07.2009 10:08