Браузер должен думать что настройки переключены.
Только если сам браузер добавил наблюдателя (nsIPrefBranch.addObserver()/nsIPrefBranch2.addObserver()) за изменениями настроек, но тогда ничего специально делать не надо.
В противном случае можно только вручную запустить обновление состояния в зависимости от настройки (то есть для каждой настройки надо отдельно писать уникальный код).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Только если сам браузер добавил наблюдателя
Мне нужно имитировать переключение настроек, но не переключать на самом деле, потому что их надо переключать быстро. Речь о ui.textHighlightBackground
Как тут может помочь наблюдатель?
Отредактировано bunda1 (05-07-2013 20:13:32)
Отсутствует
Что именно нужно имитировать? Эффект от переключения настройки, но без переключения настройки?
Тогда нужно найти код, отвечающий за отслеживание изменения настройки и вызвать его (или сделать то же, что и он). Только я не думаю, что будет большая разница в быстродействии.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
customize.parentNode.appendChild( menu );
Помогло спасибо.
В ваше меню заменил
на
В итоге открывается новое окно, и это не смотря на настройки TMP, как быть если нужно чтобы открывалась вкладка?
Спасибо
Отредактировано Kiril__777 (07-07-2013 03:34:11)
Отсутствует
как быть если нужно чтобы открывалась вкладка?
gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/search?q=cache:" + content.location );
Отсутствует
bunda1
А разделитель как добавить?
не работают
Отсутствует
А разделитель как добавить?
и
array.forEach(function( m ) { if ( "separator" in m ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; var mItem = document.createElement("menuitem");
Отсутствует
bunda1
Безмерно благодарен
Отсутствует
как правильно перенести это
["Поиск по текущему сайту", function(){var getSel=function(w){var s,d=w.document;if(d.selection){var r=d.selection.createRange();s=r?r.text:''}else{s=d.getSelection().toString();if(!s){var e,t=d.getElementsByTagName('textarea'),u=d.getElementsByTagName('input'),i=t.length;while(e=(i>0)?t[--i]:u[-i--])try{if(e.offsetHeight>0&&(s=e.value.substring(e.selectionStart,e.selectionEnd)))break}catch(x){}}};if(!s)for(var j=0,f;f=w.frames[j];j++){try{if(s=getSel(f))break}catch(x){}};return s};var w=window,s=w.prompt('Поиск на этом сайте с помощью Google',getSel(w));if(s){w.open('http://www.google.com/search?as_q='+encodeURIComponent(s)+'&as_sitesearch='+w.location.hostname)}}],
в горизонтальное субменю ?
Спасибо
Отсутствует
Скажите, а вот эта кнопка все еще работает на фф 20.0.1 ?
Отсутствует
как правильно перенести это.....
Поменяй:
на
function searchToSite() { var text = escape( convertFromUnicode ("UTF-8", document.commandDispatcher.focusedWindow.getSelection().toString() ) ); var searchUrl = "http://www.google.com/search?as_q=" + text + "&as_sitesearch=" + encodeURIComponent( gBrowser.currentURI.host ); gBrowser.selectedTab = gBrowser.addTab( searchUrl ); };
Добавлено 09-07-2013 21:37:12
Скажите, а вот эта кнопка все еще работает на фф 20.0.1 ?
А зачем тебе?
Отредактировано bunda1 (09-07-2013 21:37:12)
Отсутствует
Поменяй:
Хорошо и так сойдет!
А зачем тебе?
Хотел сделать кнопку "Автономный режим Вкл/Откл", у меня так было в . Ну и еще чего-нибудь что смогу прикрепить.
Отсутствует
Хотел сделать кнопку "Автономный режим Вкл/Откл", у меня так было в . Ну и еще чего-нибудь что смогу прикрепить.
Вот образец кнопки для переключения настроек:
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0417%u0430%u0433%u0440%u0443%u0436%u0430%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u044F%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%u0445%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20button%20%3D%20this%3B%0Avar%20s%20%3D%20%27permissions.default.image%27%3B%0Avar%20pref%20%3D%20Application.prefs.get%28s%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20pref.value%20%3D%20%28pref.value%20%3D%3D%20%221%22%29%20%3F%202%20%3A%201%3B%0A%7D%3B%0A%20%0Afunction%20toggleImage%28%29%20%7B%20%0A%20%20%20var%20icon%20%3D%20button.ownerDocument.getAnonymousElementByAttribute%28%20button%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20icon.src%20%3D%20%28pref.value%20%3D%3D%20%271%27%29%20%0A%20%20%20%3F%20button.image%20%0A%20%20%20%3A%20%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%27%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%20%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
А как поменять внешний вид кнопки - для нажатой изменить вид на обычный? Нужно это для обработки долгого нажатия, которое относительно удобно если кнопка используется для пары действий и второе является усилением первого, скажем переход на один уровень и в конец или сохранение - быстрое и с выбором папки.
Набросок реализован следующим образом:
var btn = this; var obj = { timerId: 0, isPressed: false, longClick: function(){ goUp(false); }, stdClick: function(){ goUp(true); } }; function mouseDown(e){ if(e.button == 0){ obj.isPressed = true; obj.timerId = setTimeout(function(){ if(obj.isPressed){ obj.isPressed = false; obj.longClick(); } }, 500); } }; function mouseUp(e){ if(e.button == 0){ clearTimeout(obj.timerId); if(obj.isPressed){ obj.isPressed = false; obj.stdClick(); } } }; function mouseOut(e){ if(e.button == 0){ obj.isPressed = false; } }; btn.addEventListener('mousedown', mouseDown, false); btn.addEventListener('mouseup', mouseUp, false); btn.addEventListener('mouseout', mouseOut, false); btn.onDestroy = function(){ btn.removeEventListener('mousedown', mouseDown, false); btn.removeEventListener('mouseup', mouseUp, false); btn.removeEventListener('mouseout', mouseOut, false); }; function goUp(step){ var loc = content.location; var p = loc.protocol + '//', h = loc.host + '/'; if (loc.href == p + h) { var a = h.split('.'), l = a.length, n = 2; if (l > 2) { if (a[0] == 'www') {a.shift(); l--}; if (/^(co|com|net|org|edu|gov|mil|int)$/i.test(a[l - 2])) n++ } if (l > n) { h = (n == 3 ? a[l - 3] + '.' : '') + a[l - 2] + '.' + a[l - 1] } else { p = 'http://www.google.com/search?sourceid=opera&q=related:' + p } } else if (step) { h = loc.host + loc.pathname.replace(/[^\/]+\/?$/, '') }; loc.href = p + h; };
Отсутствует
bunda1
Вы просто мастер в написании и редактировании кнопок
Только вот уточните, а что если для изменяемого параметра есть 2 значения false и true. Как должен выглядеть ваш код, так?
this.onclick = function(e) { if ( e.button == 0 ) pref.value = (pref.value == "true") ? false : true; };
Отсутствует
Только вот уточните, а что если для изменяемого параметра есть 2 значения false и true. Как должен выглядеть ваш код, так?
Выделить кодКод:
this.onclick = function(e) { if ( e.button == 0 ) pref.value = (pref.value == "true") ? false : true; };
Можно и так, но лучше:
var button = this; var s = 'dom.ipc.plugins.enabled'; var pref = Application.prefs.get(s); this.onclick = function(e) { if ( e.button == 0 ) pref.value = !pref.value; }; function toggleImage() { var icon = button.ownerDocument.getAnonymousElementByAttribute( button, "class", "toolbarbutton-icon"); icon.src = pref.value ? button.image : 'chrome://mozapps/skin/plugins/notifyPluginBlocked.png'; }; toggleImage(); gPrefService.addObserver( s, toggleImage, false ); addDestructor(function() { gPrefService.removeObserver( s, toggleImage, false ) });
Отсутствует
bunda1
Отсутствует
Подскажите код, что бы при нажатии СКМ по этой кнопке ...
addEventListener("click", function(e) { var trg = e.target; if( trg.id == "header-utils-btn" && trg.ownerDocument.documentURI == "about:addons" ) trg.ownerDocument.getElementById("utils-updateNow").doCommand(); }, true);
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
А как поменять внешний вид кнопки - для нажатой изменить вид на обычный? Нужно это для обработки долгого нажатия, которое относительно удобно если кнопка используется для пары действий и второе является усилением первого, скажем переход на один уровень и в конец или сохранение - быстрое и с выбором папки.
С inIDOMUtils.addPseudoClassLock() & Co у меня ничего не получилось, но можно сделать что-нибудь вроде такого:
obj.isPressed = false; var k = "_transitionTimer"; if(k in btn) clearInterval(btn[k]); var stl = btn.style; stl.setProperty("transition", "opacity 150ms ease-in-out", "important"); btn[k] = setTimeout(function() { stl.setProperty("opacity", "0.5", "important"); btn[k] = setTimeout(function() { stl.opacity = ""; btn[k] = setTimeout(function() { stl.transition = ""; delete btn[k]; }, 150); }, 150); }, 0); obj.longClick();
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нужна помощь:
Этой кнопкой создавал кнопки-ярлыки для сайтов:
/*CODE*/ var doc = getBrowser (). contentDocument; var title = doc. title; var pageURI = makeURI (doc. location. href, null, null); var iconData = getFaviconData (pageURI); custombuttons. cloneButton (this); var newButtonLink = custombuttons. makeButtonLink ("update", this. nextSibling. id); var params = custombuttons. cbService. getButtonParameters (newButtonLink). wrappedJSObject; params. image = iconData; params. name = title; params. code = "getBrowser (). selectedTab = getBrowser (). addTab (\"" + doc. location. href + "\");"; params. wrappedJSObject = params; custombuttons. cbService. installButton (params); function makeURI (aURL, aOriginCharset, aBaseURI) { var ioService = Components. classes["@mozilla.org/network/io-service;1"]. getService (Components. interfaces. nsIIOService); return ioService. newURI (aURL, aOriginCharset, aBaseURI); } function getFaviconData (pageURI) { var fis = Components. classes ["@mozilla.org/browser/favicon-service;1"]. getService(Components.interfaces.nsIFaviconService); var iconURL /*= fis. getFaviconForPage (pageURI)*/; try { iconURL = fis. getFaviconForPage (pageURI); } catch (e) {} if (iconURL) return fis. getFaviconDataAsDataURL (iconURL); return ""; } var elt = document. getAnonymousElementByAttribute (this, "class", "toolbarbutton-icon"); elt. style. height = "16px"; elt. style. width = "16px";
версия браузера - 22.0
спасибо.
Отсутствует