В контекстном меню автоматически исчезает пункт меню. Как это "вылечить"?
Давно пользуюсь таким аддоном как 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);
}
|
Цитата:
Цитата:
|
Спасибо.
Понял. А без платного теперь (после 100 запросов) гугл-апи какой может быть выход? Можно без апи просто втупую скачивать в фоне страницу выдачи гугла (не открывая её), парсить и потом в контекстном меню выдавать первые 4 результата? Это возможно сделать средствами JS? |
Исмаил Прокопенко,
можно но сложно, не помогу. |
| Часовой пояс GMT +3, время: 08:51. |