изначальную кнопку удалить, код запихнуть в другую имеющуюся кнопку, в инициализацию.
Баг заметил: кнопка перебивает хоткей для Консоли Ошибок (ctrl+shift+J), поправь его, пожалуйста.
Ну и если можно, то за одно попробуй пофиксить баг описанный мной пару постов назад.
Добавлено 03-08-2011 20:54:13
Anton
А как насчёт добавления какого-то места в настройках CB, куда можно было бы вписывать коды инициализаций? А то есть вещи, которые оформляют в виде кнопки с инициализацией даже тогда, когда сама кнопка не нужна, но чтобы код из инициализации исполнялся - приходится держать её на панели, либо подсовывать этот код в другие кнопки, что приводит к путанице (легко забыть куда чего засунул).
Отредактировано iDev.Pi (03-08-2011 20:54:13)
mzfx
Отсутствует
Баг заметил: кнопка перебивает хоткей для Консоли Ошибок (ctrl+shift+J), поправь его, пожалуйста.
//FindBar, сочетания клавиш(Key config)......................................................... addEventListener('keydown', function (event){ //FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar)......... if ((event.keyCode==0x46)&&(event.ctrlKey)) { event.preventDefault(); event.stopPropagation(); gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout();} //Findbar(ctrl+ ALT), поиск по странице из буфера обмена, find from clipboard............. if ((event.keyCode==0x12)&&(event.ctrlKey)) { gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout(); goDoCommand("cmd_selectNone"); goDoCommand("cmd_paste");} //FindBar, закрыть любой клавишей клавиатуры(FindBar close, Any key keyboard).. //else{gFindBar.close();} }, false); //find bar, показать количество совпадений(find bar,show the number of matches).................... (function() { //add label to findbar var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status'); var sep = document.createElement("toolbarspacer"); var count = document.createElement("label"); count.hidden = true; status.parentNode.insertBefore(sep, status); status.parentNode.insertBefore(count, status);//findbar-container gFindBar.__proto__._foundMatches = count; gFindBar.__proto__._updateMatchesCount = function(aRes) { if (!this._updateMatchCountTimeout) window.clearTimeout(this._updateMatchCountTimeout); this._updateMatchCountTimeout = window.setTimeout(function(aRes, aSelf) { aSelf._updateMatchesCountWorker(aRes); }, 0, aRes, this); } gFindBar.__proto__._updateMatchesCountWorker = function(aRes) { var word = this._findField.value; if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) { this._foundMatches.hidden = true; this._foundMatches.value = ""; } else { var matchesCount = this._countMatches(word).toString(); if (matchesCount != "0") { if (matchesCount == "1") this._foundMatches.value = matchesCount +" \hits "; else if (matchesCount == "-1") { var matchLimit = 100; this._foundMatches.value = " \> 100 hits"; // var key = (matchLimit > 1000) ? "Decrease" : "Increase"; } else this._foundMatches.value = matchesCount +" \hits"; this._foundMatches.hidden = false; } else { this._foundMatches.hidden = true; this._foundMatches.value = ""; } window.clearTimeout(this._updateMatchCountTimeout); } } gFindBar.__proto__._countMatches = function(aWord, aWindow) { var win = aWindow || this.browser.contentWindow; var countFound = 0; for (var i = 0, count; win.frames && i < win.frames.length; i++) { if ((count = this._countMatches(aWord, win.frames[i])) != -1) countFound += count; else return count; } var doc = win.document; if (!doc || !(doc instanceof HTMLDocument)) return countFound; var body = doc.body; var count = body.childNodes.length; var searchRange = doc.createRange(); var startPt = doc.createRange(); var endPt = doc.createRange(); searchRange.setStart(body, 0); searchRange.setEnd(body, count); startPt.setStart(body, 0); startPt.setEnd(body, 0); endPt.setStart(body, count); endPt.setEnd(body, count); var retRange = null; var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"] .createInstance() .QueryInterface(Components.interfaces.nsIFind); finder.caseSensitive = this._shouldBeCaseSensitive(aWord); var matchLimit = 100; while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) { if (this._rangeIsVisible(retRange, win)) { if (this._findMode == this.FIND_LINKS) { if (this._rangeStartsInLink(retRange)) ++ countFound; } else ++ countFound; } if (countFound == matchLimit) { countFound = -1; break; } startPt = doc.createRange(); startPt.setStart(retRange.startContainer, retRange.startOffset + 1); } return countFound; } gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) { var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } while (node && node.nodeType != node.ELEMENT_NODE) node = node.parentNode; // There is no perfect way to check if a node is visible in JavaScript, // so use the best measures we can have if (node) { var style = aWindow.getComputedStyle(node, ""); if (style) { if (style.visibility == "hidden" || style.visibility == "collapse" || style.display == "none") return false; if (style.left != "auto" && style.width != "auto") if (style.left < 0 && style.left + style.width < 0) return false; if (style.top != "auto" && style.height != "auto") if (style.top < 0 && style.top + style.height < 0) return false; } } return true; } gFindBar.__proto__._rangeStartsInLink = function(aRange) { var isInsideLink = false; var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } const XLink_NS = "http://www.w3.org/1999/xlink"; do { if (node instanceof HTMLAnchorElement) { isInsideLink = node.hasAttribute("href"); break; } else if (typeof node.hasAttributeNS == "function" && node.hasAttributeNS(XLink_NS, "href")) { isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple"); break; } node = node.parentNode; } while (node); return isInsideLink; } //insert count function to original eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}"); eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}"); })(); // FindBar "/" style....................................................................... var sId = "__customButtonsStyle__" + this.id; // Unique style "id" var cssStr = <><![CDATA[ #FindToolbar > .findbar-container > * { display: -moz-box !important; } ]]></> .toString() .replace(/%button%/g, "#" + this.id); function sheet(cssStr, removeFlag) { var cc = Components.classes; var sss = cc["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var ios = cc["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var data = "data:text/css," + encodeURIComponent(cssStr); var uri = ios.newURI(data, null, null); if(sss.sheetRegistered(uri, sss.AGENT_SHEET)) sss.unregisterSheet(uri, sss.AGENT_SHEET); if(removeFlag) return; sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); window[sId] = cssStr; } if(!(sId in window)) sheet(cssStr); else if(window[sId] != cssStr) { sheet(window[sId], true); sheet(cssStr); }
Ну и если можно, то за одно попробуй пофиксить баг описанный мной пару постов назад.
Извини, но я не понял до конца чём проблема. Может языковой барьер.
Напиши еще раз.
Отсутствует
А то есть вещи, которые оформляют в виде кнопки с инициализацией даже тогда, когда сама кнопка не нужна, но чтобы код из инициализации исполнялся
Там вся архитектура привязана к кнопкам – для инициализации должен сработать конструктор binding'а, редактор тоже работает напрямую с кнопками.
В качестве альтернативы есть userChromeJS, но там все в кучу. Или нужен скрипт-загрузчик.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Извини, но я не понял до конца чём проблема. Может языковой барьер.
Напиши еще раз.
Оок, попробую изложить суть своих требований по пунктам:
1. Хоткей переделать с ctrl+alt на ctrl+alt+f (я так понял - пока у тебя это просто не получается накодить, я этот пункт пишу для других, если кто возьмётся).
2. Баг. STR: a). выделить что-то на странице
b). ctrl+c
с). не снимаем выделения с текста на странице
d). ctrl+f
Результат: текст из буфера обмена вставляется в сёрчбар.
Ожидаемый результат: текст из буфера обмена не вставляется в сёрчбар.
Комментарий: если в пункте c). мы снимем выделение с текста - баг не воспроизводится.
3. Предыдущий баг натолкнул на мысль использовать его во благо, т.е. приделать фичу: при нажатии ctrl+alt+f должна делаться проверка: "выделено ли что-нибудь на странице?" - если "да", то "открыть поиск + вставить в поле поиска выделенное", а если "нет" - то "открыть поиск + вставить в поле поиска текст из буфера".
Твой последний код попробовал - баг исчез, спасибо.
Добавлено 04-08-2011 02:52:07
Там вся архитектура привязана к кнопкам – для инициализации должен сработать конструктор binding'а, редактор тоже работает напрямую с кнопками.
Ну можно же сделать эмуляцию создания кнопок, даже не эмуляцию, а просто создание с пометкой, что они без физической кнопки на тулбаре. К кнопкам с такой пометкой должен применяться стиль display:none, а коды инициализаций таких кнопок надо было бы в Менеджер Дополнений в раздел "КБ кнопки", который, я надеюсь, Anton всё-таки приделает, где будут хотя бы просто списком все установленные кнопки (а ещё лучше с возможностью редактирования их прям оттуда), а так же наши кнопки с пометкой.
Отредактировано iDev.Pi (04-08-2011 02:52:07)
mzfx
Отсутствует
Anton
А как насчёт добавления какого-то места в настройках CB, куда можно было бы вписывать коды инициализаций? А то есть вещи, которые оформляют в виде кнопки с инициализацией даже тогда, когда сама кнопка не нужна, но чтобы код из инициализации исполнялся - приходится держать её на панели, либо подсовывать этот код в другие кнопки, что приводит к путанице (легко забыть куда чего засунул).
В todo записано давно. Сейчас, к сожалению, руки не доходят до гораздо более актуальных вещей.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
1. Хоткей переделать с ctrl+alt на ctrl+alt+f.
//FindBar, сочетания клавиш(Key config)......................................................... addEventListener('keydown', function (event){ //FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar)......... if (event.altKey == false) { if ((event.keyCode==0x46)&&(event.ctrlKey)) { event.preventDefault(); event.stopPropagation(); gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout();}} //Findbar(ctrl+ ALT), поиск по странице из буфера обмена, find from clipboard............. if (event.altKey == true) { if ((event.keyCode==0x46)&&(event.ctrlKey)) { gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout(); goDoCommand("cmd_selectNone"); goDoCommand("cmd_paste");}} //FindBar, закрыть любой клавишей клавиатуры(FindBar close, Any key keyboard).. //else{gFindBar.close();} }, false); //find bar, показать количество совпадений(find bar,show the number of matches).................... (function() { //add label to findbar var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status'); var sep = document.createElement("toolbarspacer"); var count = document.createElement("label"); count.hidden = true; status.parentNode.insertBefore(sep, status); status.parentNode.insertBefore(count, status);//findbar-container gFindBar.__proto__._foundMatches = count; gFindBar.__proto__._updateMatchesCount = function(aRes) { if (!this._updateMatchCountTimeout) window.clearTimeout(this._updateMatchCountTimeout); this._updateMatchCountTimeout = window.setTimeout(function(aRes, aSelf) { aSelf._updateMatchesCountWorker(aRes); }, 0, aRes, this); } gFindBar.__proto__._updateMatchesCountWorker = function(aRes) { var word = this._findField.value; if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) { this._foundMatches.hidden = true; this._foundMatches.value = ""; } else { var matchesCount = this._countMatches(word).toString(); if (matchesCount != "0") { if (matchesCount == "1") this._foundMatches.value = matchesCount +" \hits "; else if (matchesCount == "-1") { var matchLimit = 100; this._foundMatches.value = " \> 100 hits"; // var key = (matchLimit > 1000) ? "Decrease" : "Increase"; } else this._foundMatches.value = matchesCount +" \hits"; this._foundMatches.hidden = false; } else { this._foundMatches.hidden = true; this._foundMatches.value = ""; } window.clearTimeout(this._updateMatchCountTimeout); } } gFindBar.__proto__._countMatches = function(aWord, aWindow) { var win = aWindow || this.browser.contentWindow; var countFound = 0; for (var i = 0, count; win.frames && i < win.frames.length; i++) { if ((count = this._countMatches(aWord, win.frames[i])) != -1) countFound += count; else return count; } var doc = win.document; if (!doc || !(doc instanceof HTMLDocument)) return countFound; var body = doc.body; var count = body.childNodes.length; var searchRange = doc.createRange(); var startPt = doc.createRange(); var endPt = doc.createRange(); searchRange.setStart(body, 0); searchRange.setEnd(body, count); startPt.setStart(body, 0); startPt.setEnd(body, 0); endPt.setStart(body, count); endPt.setEnd(body, count); var retRange = null; var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"] .createInstance() .QueryInterface(Components.interfaces.nsIFind); finder.caseSensitive = this._shouldBeCaseSensitive(aWord); var matchLimit = 100; while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) { if (this._rangeIsVisible(retRange, win)) { if (this._findMode == this.FIND_LINKS) { if (this._rangeStartsInLink(retRange)) ++ countFound; } else ++ countFound; } if (countFound == matchLimit) { countFound = -1; break; } startPt = doc.createRange(); startPt.setStart(retRange.startContainer, retRange.startOffset + 1); } return countFound; } gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) { var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } while (node && node.nodeType != node.ELEMENT_NODE) node = node.parentNode; // There is no perfect way to check if a node is visible in JavaScript, // so use the best measures we can have if (node) { var style = aWindow.getComputedStyle(node, ""); if (style) { if (style.visibility == "hidden" || style.visibility == "collapse" || style.display == "none") return false; if (style.left != "auto" && style.width != "auto") if (style.left < 0 && style.left + style.width < 0) return false; if (style.top != "auto" && style.height != "auto") if (style.top < 0 && style.top + style.height < 0) return false; } } return true; } gFindBar.__proto__._rangeStartsInLink = function(aRange) { var isInsideLink = false; var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } const XLink_NS = "http://www.w3.org/1999/xlink"; do { if (node instanceof HTMLAnchorElement) { isInsideLink = node.hasAttribute("href"); break; } else if (typeof node.hasAttributeNS == "function" && node.hasAttributeNS(XLink_NS, "href")) { isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple"); break; } node = node.parentNode; } while (node); return isInsideLink; } //insert count function to original eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}"); eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}"); })(); // FindBar "/" style....................................................................... var sId = "__customButtonsStyle__" + this.id; // Unique style "id" var cssStr = <><![CDATA[ #FindToolbar > .findbar-container > * { display: -moz-box !important; } ]]></> .toString() .replace(/%button%/g, "#" + this.id); function sheet(cssStr, removeFlag) { var cc = Components.classes; var sss = cc["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var ios = cc["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var data = "data:text/css," + encodeURIComponent(cssStr); var uri = ios.newURI(data, null, null); if(sss.sheetRegistered(uri, sss.AGENT_SHEET)) sss.unregisterSheet(uri, sss.AGENT_SHEET); if(removeFlag) return; sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); window[sId] = cssStr; } if(!(sId in window)) sheet(cssStr); else if(window[sId] != cssStr) { sheet(window[sId], true); sheet(cssStr); }
Оок, попробую изложить суть своих требований по пунктам:
2. Баг. STR: a). выделить что-то на странице
b). ctrl+c
с). не снимаем выделения с текста на странице
d). ctrl+f
Результат: текст из буфера обмена вставляется в сёрчбар.
Ожидаемый результат: текст из буфера обмена не вставляется в сёрчбар.
Комментарий: если в пункте c). мы снимем выделение с текста - баг не воспроизводится.
3. Предыдущий баг натолкнул на мысль использовать его во благо, т.е. приделать фичу: при нажатии ctrl+alt+f должна делаться проверка: "выделено ли что-нибудь на странице?" - если "да", то "открыть поиск + вставить в поле поиска выделенное", а если "нет" - то "открыть поиск + вставить в поле поиска текст из буфера".
попробуй
1. выделить что-то на странице,
2. ctrl+c,
3. не снимаем выделения с текста на странице,
4. выделить что-то на другой странице,
5. ctrl+f на другой странице,
Отредактировано bunda1 (05-08-2011 01:03:00)
Отсутствует
попробуй
1. выделить что-то на странице,
2. ctrl+c,
3. не снимаем выделения с текста на странице,
4. выделить что-то на другой странице,
5. ctrl+f на другой странице,
В поиск вставляется выделенный текст. это типа не баг, а фича? Оок, хотя я бы в таком случае хотел бы ей на CTRL+ALT+F повесить, хотя теперь когда я понял суть этой фичи - может и с CTRL+F привыкну.
mzfx
Отсутствует
iDev.Pi
вот все как ты хотел, оказалось что сделать это было не так уж и трудно.
1. Хоткей переделать с ctrl+alt на ctrl+alt+f,
2. фичa: при нажатии ctrl+alt+f должна делаться проверка: "выделено ли что-нибудь на странице?" - если "да", то "открыть поиск + вставить в поле поиска выделенное", а если "нет" - то "открыть поиск + вставить в поле поиска текст из буфера".
//FindBar, сочетания клавиш(Key config)......................................................... addEventListener('keydown', function (event){ //FindBar(ctrl+ F)показать - скрыть(Toggle Find Bar)......... if (event.altKey == false) { if ((event.keyCode==0x46)&&(event.ctrlKey)) { event.preventDefault(); event.stopPropagation(); gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout();}} //Findbar(ctrl+ ALT+ F), поиск по странице из буфера обмена, find from clipboard............. if (event.altKey == true) { if ((event.keyCode==0x46)&&(event.ctrlKey)) { var t = content.getSelection().toString(); if(t) { gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout();} else{ gFindBar.startFind(gFindBar.FIND_TYPEAHEAD); gFindBar._setFindCloseTimeout(); goDoCommand("cmd_selectNone"); goDoCommand("cmd_paste");}}} //FindBar, закрыть любой клавишей клавиатуры(FindBar close, Any key keyboard).. //else{gFindBar.close();} }, false); //find bar, показать количество совпадений(find bar,show the number of matches).................... (function() { //add label to findbar var status = document.getAnonymousElementByAttribute(gFindBar, 'anonid', 'match-case-status'); var sep = document.createElement("toolbarspacer"); var count = document.createElement("label"); count.hidden = true; status.parentNode.insertBefore(sep, status); status.parentNode.insertBefore(count, status);//findbar-container gFindBar.__proto__._foundMatches = count; gFindBar.__proto__._updateMatchesCount = function(aRes) { if (!this._updateMatchCountTimeout) window.clearTimeout(this._updateMatchCountTimeout); this._updateMatchCountTimeout = window.setTimeout(function(aRes, aSelf) { aSelf._updateMatchesCountWorker(aRes); }, 0, aRes, this); } gFindBar.__proto__._updateMatchesCountWorker = function(aRes) { var word = this._findField.value; if (aRes == this.nsITypeAheadFind.FIND_NOTFOUND || !word) { this._foundMatches.hidden = true; this._foundMatches.value = ""; } else { var matchesCount = this._countMatches(word).toString(); if (matchesCount != "0") { if (matchesCount == "1") this._foundMatches.value = matchesCount +" \hits "; else if (matchesCount == "-1") { var matchLimit = 100; this._foundMatches.value = " \> 100 hits"; // var key = (matchLimit > 1000) ? "Decrease" : "Increase"; } else this._foundMatches.value = matchesCount +" \hits"; this._foundMatches.hidden = false; } else { this._foundMatches.hidden = true; this._foundMatches.value = ""; } window.clearTimeout(this._updateMatchCountTimeout); } } gFindBar.__proto__._countMatches = function(aWord, aWindow) { var win = aWindow || this.browser.contentWindow; var countFound = 0; for (var i = 0, count; win.frames && i < win.frames.length; i++) { if ((count = this._countMatches(aWord, win.frames[i])) != -1) countFound += count; else return count; } var doc = win.document; if (!doc || !(doc instanceof HTMLDocument)) return countFound; var body = doc.body; var count = body.childNodes.length; var searchRange = doc.createRange(); var startPt = doc.createRange(); var endPt = doc.createRange(); searchRange.setStart(body, 0); searchRange.setEnd(body, count); startPt.setStart(body, 0); startPt.setEnd(body, 0); endPt.setStart(body, count); endPt.setEnd(body, count); var retRange = null; var finder = Components.classes["@mozilla.org/embedcomp/rangefind;1"] .createInstance() .QueryInterface(Components.interfaces.nsIFind); finder.caseSensitive = this._shouldBeCaseSensitive(aWord); var matchLimit = 100; while ((retRange = finder.Find(aWord, searchRange, startPt, endPt))) { if (this._rangeIsVisible(retRange, win)) { if (this._findMode == this.FIND_LINKS) { if (this._rangeStartsInLink(retRange)) ++ countFound; } else ++ countFound; } if (countFound == matchLimit) { countFound = -1; break; } startPt = doc.createRange(); startPt.setStart(retRange.startContainer, retRange.startOffset + 1); } return countFound; } gFindBar.__proto__._rangeIsVisible = function(aRange, aWindow) { var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } while (node && node.nodeType != node.ELEMENT_NODE) node = node.parentNode; // There is no perfect way to check if a node is visible in JavaScript, // so use the best measures we can have if (node) { var style = aWindow.getComputedStyle(node, ""); if (style) { if (style.visibility == "hidden" || style.visibility == "collapse" || style.display == "none") return false; if (style.left != "auto" && style.width != "auto") if (style.left < 0 && style.left + style.width < 0) return false; if (style.top != "auto" && style.height != "auto") if (style.top < 0 && style.top + style.height < 0) return false; } } return true; } gFindBar.__proto__._rangeStartsInLink = function(aRange) { var isInsideLink = false; var node = aRange.startContainer; if (node.nodeType == node.ELEMENT_NODE) { if (node.hasChildNodes) { var childNode = node.childNodes[aRange.startOffset]; if (childNode) node = childNode; } } const XLink_NS = "http://www.w3.org/1999/xlink"; do { if (node instanceof HTMLAnchorElement) { isInsideLink = node.hasAttribute("href"); break; } else if (typeof node.hasAttributeNS == "function" && node.hasAttributeNS(XLink_NS, "href")) { isInsideLink = (node.getAttributeNS(XLink_NS, "type") == "simple"); break; } node = node.parentNode; } while (node); return isInsideLink; } //insert count function to original eval("gFindBar._updateCaseSensitivity=" + gFindBar._updateCaseSensitivity.toString().slice(0, -1) + "this._updateMatchesCount();}"); eval("gFindBar._updateStatusUI=" + gFindBar._updateStatusUI.toString().slice(0, -1) + "this._updateMatchesCount();}"); })(); // QuickFind стиль(style)....................................................................... var sId = "__customButtonsStyle__" + this.id; // Unique style "id" var cssStr = <><![CDATA[ #FindToolbar > .findbar-container > * { display: -moz-box !important; } ]]></> .toString() .replace(/%button%/g, "#" + this.id); function sheet(cssStr, removeFlag) { var cc = Components.classes; var sss = cc["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService); var ios = cc["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var data = "data:text/css," + encodeURIComponent(cssStr); var uri = ios.newURI(data, null, null); if(sss.sheetRegistered(uri, sss.AGENT_SHEET)) sss.unregisterSheet(uri, sss.AGENT_SHEET); if(removeFlag) return; sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); window[sId] = cssStr; } if(!(sId in window)) sheet(cssStr); else if(window[sId] != cssStr) { sheet(window[sId], true); sheet(cssStr); }
Отредактировано bunda1 (05-08-2011 19:52:51)
Отсутствует
Кто нибудь знает id оранжевой кнопки с надписью "Firefox" в правом верхнем углу ?
Хочу написать код, аналогичный коду сокрытия панели меню http://forum.mozilla-russia.org/viewtop … 44#p385744, а id не знаю. И еще может кто знает как можно на этой кнопке текст поменять, например написать "Пуск" или просто "F"?
Отсутствует
...как можно на этой кнопке текст поменять, например написать "Пуск" или просто "F"?
middlemouse.paste
пост №303
Добавлено 06-08-2011 04:26:52
... и ещё можно довольно много найти , если в встроенный поиск от Google вбить appmenu-button
Отредактировано Крошка Ру (06-08-2011 04:26:52)
Отсутствует
iDev.Pi
Крошка Ру
Спасибо! Кнопочку скрыл. Сэкономил место.
Отсутствует
middlemouse.paste
И еще может кто знает как можно на этой кнопке текст поменять […] просто "F"?
Именно так (и не только так) можно сделать с помощью Hide Caption Titlebar Plus, а есть ещё множество вариантов (вот некоторые), в том числе более красивых — со значком вместо надписи, причём у меня в Виндовс место куда лучше экономится, когда кнопочка есть (а в линуксе — Убунту всё по другому).
Отсутствует
А еще лучше скрывается кнопка и экономится место - целый заголовок - этим:http://forum.mozilla-russia.org/viewtop … 46#p416246
... а Меню организовывается другой кнопочкой(-ами) в любом удобном месте.
Отредактировано slbgz (11-08-2011 02:32:51)
Отсутствует
Anton
Караул, сечас пытаюс перейти на FF5 и оказалось что если открыть Настройка панелей инструментов многии коди начинают выполняться два раза, особено те которые связани с табамы.
Вот например такой простой код начинает закрывать сразу две вкладки.
// close Tab By Double Click (function() { var mouseDoubleClickHandler = function(event) { if (event.button != 0) return; event.preventDefault(); event.stopPropagation(); if (event.target.localName != "tab") return; if ((gBrowser.mTabContainer.childNodes.length <= 1) && (gBrowser.currentURI.spec == "about:blank")) return; gBrowser.removeCurrentTab(); }; gBrowser.mTabContainer.addEventListener("dblclick", mouseDoubleClickHandler, false); })()
Что делать и в чем тут дело.
Отредактировано bunda1 (11-08-2011 12:34:53)
Отсутствует
slbgz
1. у меня деинсталлировать нечего, потому что использую портабле,
2. эта проблема на чистом профиле, с одним расширением Custom Buttons
У тебя таких проблем нет эсли открыть и закрыть Настройка панелей инструментов ?
Отсутствует
Я попробовал откатиться с 5.0 на 4.0 - заглючило почти все, только некоторые кнопки работали. Все дело - в способе «отката». (тоже - портабельный, но - свой...)
Добавлено 11-08-2011 15:38:07
У тебя таких проблем нет эсли открыть и закрыть Настройка панелей инструментов ?
Есть одна небольшая проблемка - не всегда после открытия/закрытия срабатывает правильно ТoggleToolbars. Не знаю из-за чего, но меня это не напрягает, все остальное работает без проблем.
Добавлено 11-08-2011 15:51:03
Что делать и в чем тут дело.
Наверно нужно локализовать кнопку, которая «глючит», путем их последовательной установки по одной штуке?
Отредактировано slbgz (11-08-2011 15:51:03)
Отсутствует
Наверно нужно локализовать кнопку, которая «глючит», путем их последовательной установки по одной штуке?
уже пробовал и пришел к выводу что виноват FF5
Отсутствует
Хмм, значит нужна «подгонка» кнопок к новым версиям Фокса...
А тот Фокс v.5.0 у тебя тоже - портабле или нет?..
Оффтоп.
bunda1, а че так долго на 3.6 сидел, а теперь решил перейти на 5, если не секрет?
Появилась поддержка расширения, ранее недоступного в версиях Фокса выше 3.6?
Отредактировано slbgz (11-08-2011 22:06:33)
Отсутствует
slbgz
Хмм, значит нужна «подгонка» кнопок к новым версиям Фокса...
А тот Фокс v.5.0 у тебя тоже - портабле или нет?..
портабле, я уже устал подгонять, и не знаю в чем проблема.
у меня многое не работоло на FF4 пока исправыл вышла FF5
и вот опять глюки, что делать, как дальше жить.
Отсутствует
портабле, я уже устал подгонять, и не знаю в чем проблема.
Может проблема - в том портабле?
Я себе «делаю» сопственные «портабле» просто копированием соотв. каталогов установленной «нормальной» версии в нужные места и созданием ярлычка к .exe ...
что делать, как дальше жить.
Да наплевать на некоторые «фичи» или заменить их работающими аналогами и все.
Отредактировано slbgz (11-08-2011 23:48:12)
Отсутствует
bunda1
Можно попробовать использовать внутреннюю реализацию addEventListener – заменить
gBrowser.mTabContainer.addEventListener("dblclick", mouseDoubleClickHandler, false);
на
addEventListener("dblclick", mouseDoubleClickHandler, false, gBrowser.mTabContainer);
Тогда listener должен будет сниматься при срабатывании деструктора кнопки.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует