профи, может подскажите решение? возможно это можно организовать с помощью Custom Buttons. Или подскажите к кому обратиться.
Допустим есть 2 страницы одного сайта. На одной из них есть картинка. Но она появляется в зависимости от состояния. Как пример, есть товар, появляется картинка о наличии товара. Нет товара - нет картинки.
Как эту картинку транслировать на вторую страницу чтобы в удобном для меня виде на второй странице отображалось наличие товара?
Я смог только перенести картинку стилем, но адрес картинки постоянный, а не берётся с 1-й страницы, поэтому картинка показывается постоянно вне зависимости от состояния на первой странице.
@-moz-document url-prefix("https://www.адрес сайта"),
url-prefix("https://www.адрес сайта") {
элемент перед которым должна быть картинка::before{
content: url (адрес картинки) !important;
}
Отсутствует
Вот на этой странице http://www.merriam-webster.com/ есть справа колонка Word of the Day
Если кликнуть по иконке громкоговорителя, выскакивает окошко.
Собственно вопрос: как в этом окошке приделать eventListener на загрузку страницы?
Отсутствует
okkamas_knife
в общем кнопкой CB тут не обойтись
Отсутствует
бери за основу №209
прикручивай проверку адреса и цепляй листенер
там в коде ссылка есть на CB_Editor_Toggle_on_Top можешь там посмотреть как проверка адреса сделана
Я там ничего не понял, не мой уровень
А зачем проверять адрес? Я думал можно обратиться к окну document.commandDispatcher.focusedWindow или наподобие.
Отсутствует
Здравствуйте, как в кнопке поставить задержку между двумя действиями, типа sleep, wait...?
есть кнопка
firefoxTe = getBrowser().addTab('https://www.google.com.ua/'); getBrowser().selectedTab = firefoxTe;
goQuitApplication();
нужно чтобы кнопка перед закрытием немного подождала
Отсутствует
Приветствую!
Поставил 38.0.5. Нужны кнопки "бинокль" ( поиск слова на странице ) и "карандаш" ( перевод страницы ).
Не подскажите, где их взять?
Отсутствует
Подскажите, пожалуйста, почему у меня заводится:
(function() { if ( document.getElementById("paste-plain-text") ) return; var menuItem = document.createElement("menuitem"); var refChild = document.getElementById("contentAreaContextMenu").getElementsByAttribute("command", "cmd_paste")[0]; menuItem.id = "paste-plain-text"; menuItem.setAttribute("label", "Paste as plain text"); menuItem.setAttribute("command", "cmd_pasteNoFormatting"); menuItem.setAttribute("oncommand", "doCommand();"); document.getElementById("contentAreaContextMenu").insertBefore(menuItem, refChild.nextSibling); document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() { var canPaste = refChild.getAttribute("disabled") == "true"; menuItem.hidden = !gContextMenu.onTextInput; menuItem.setAttribute("disabled", canPaste.toString()); }, false); })();
?
поиск слова на странице
Она же и так имеется. Поищите в режиме настройки интерфейса. Ну или, если все-равно нужна, то:
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%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C/%u0421%u043A%u0440%u044B%u0442%u044C%20%u043F%u0430%u043D%u0435%u043B%u044C%20%u043F%u043E%u0438%u0441%u043A%u0430%20%u043F%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAERSURBVHjapJKxSoNBEIR/ER8gBJtoKkmnINoF1MZWfAQlnY8wMIF5ABstrGwFSytbG2vtbVQQtRCNKAgSsmn24PjZi0iKgeNm97vdva3MrJpGlZlVoCKtgjoD9QJqCOoe1DGoVoqZBOiB+gVlgd5BbU4CbPmLBuoG1C6odVD7oJ78/gNUuwS49qBLUHM1rwHqzv2TCNDMSl0pzGbP/ccIsOzmqJCchmughhFgMatgoQDYcf+1NIPU41GQPAvqyv3zEqCftXEIat7vO6AuUvmg1iJAF9Rn8Pc/2XkE6iDagzz5C5RAPdRAt6C2o03sghp40DeoDQ+aAbXki9SqzyQHPAfJfyoHnIJ6Szv+b8A0Gg8Ak04bfbA1mHsAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BgFindBar.hidden%20%3F%20gFindBar.onFindCommand%28%29%20%3A%20gFindBar.close%28%29%3B%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
"карандаш" ( перевод страницы )
Нет такой кнопки по дефолту. Это от какого-то аддона.
Отсутствует
Нет такой кнопки по дефолту. Это от какого-то аддона.
Кнопку поиска нашёл. Спасибо.
Отредактировано aleksandros (26-06-2015 18:49:44)
Отсутствует
Подскажите, пожалуйста, почему у меня заводится:
Наверно нет в Firefox такой команды cmd_pasteNoFormatting и нет атрибута command для пункта контекстного меню который что то запускает, а есть атрибут oncommand
Отсутствует
А может кто сделать кнопку Highlight работающей в последних и ?
Так работает?
this.safeHTML = function(unsafeCode) { return unsafeCode.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"); }; this.unsafeHTML = function(safeCode) { return safeCode.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); }; this. clickHandler = function (event) { if ((event. button == 2) && event. ctrlKey) this. mObj. setPri (); else this. mObj. setSub (); if (event. ctrlKey) { this. showPopup (this); return; } if (event. button == 0) { this. innerHTML = this. innerHTML || this.safeHTML(content. document. body. innerHTML); this. searchPrompt('',false); } else if (event. button == 1) { this. showPopup (this); } else { content. document. body. innerHTML = this.unsafeHTML(this. innerHTML) || content. document. body. innerHTML; this. innerHTML = ""; } }; this.showPopup = function(node) { var popup = document.getElementById("custombuttons-contextpopup"); var x = node.boxObject.x; var y = node.boxObject.y + node.boxObject.height; document.popupNode = node; popup.showPopup(node, x, y, "popup", null, null); }; this. doHighlight = function (bodyText, searchTerm, highlightStartTag, highlightEndTag) { if ((!highlightStartTag) || (!highlightEndTag)) { highlightStartTag = "<font style='background-color:" + this. highlightColor + ";'>"; highlightEndTag = "</font>"; } var newText = ""; var i = -1; var lcSearchTerm = searchTerm.toLowerCase(); var lcBodyText = bodyText.toLowerCase(); while (bodyText.length > 0) { i = lcBodyText.indexOf(lcSearchTerm, i+1); if (i < 0) { newText += bodyText; bodyText = ""; } else { if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) { if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) { newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag; bodyText = bodyText.substr(i + searchTerm.length); lcBodyText = bodyText.toLowerCase(); i = -1; } } } } return newText; } this. highlightSearchTerms = function (searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag) { if (treatAsPhrase) { searchArray = [searchText]; } else { searchArray = searchText.split(" "); } if (!content.document.body || typeof(content.document.body.innerHTML) == "undefined") { if (warnOnFailure) { alert("The text of this page is not available. Highlighting will not work."); } return false; } var bodyText = content.document.body.innerHTML; for (var i = 0; i < searchArray.length; i++) { bodyText = this. doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag); } content.document.body.innerHTML = bodyText; return true; } this. searchPrompt = function () { var searchText = document.commandDispatcher.focusedWindow.getSelection().toString() || prompt('Highlight:',''); searchText && this. highlightSearchTerms(searchText, true); } this. changeColor = function (menuitem, event) { var topmenuitem = document. getElementById (document. popupNode. firstId); topmenuitem. setAttribute ("label", "* " + menuitem. getAttribute ("label")); document. popupNode. highlightColor = menuitem. getAttribute ("value"); }; var colors = { "Yellow": "yellow", "Green": "green", "Blue": "blue", "Red": "red" }; var mItem = {}; document. getElementById (CB2const. sCBCtxtMenu). setAttribute ("oncommand", "event.stopPropagation()"); var mObj = custombuttons. getCbContextObj (this); this. mObj = mObj; mObj. setSub (); var mItem = new mObj. getItem (); mItem. id = "topmenuitem"; mItem. label = "* Yellow"; mItem. value = "yellow"; mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild); this. firstId = mItem. id; mItem = new mObj. getItem (); mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild); for (var i in colors) { var mItem = new mObj. getItem (); mItem. id = i; mItem. label = i; mItem. value = colors [i]; mItem. oncommand = "document. popupNode. changeColor (this, event);" mItem = mObj. insertBefore (mItem, mObj. oMenu. lastChild); } mItem = new mObj. getItem (); mObj. insertBefore (mItem, mObj. oMenu. lastChild); this. innerHTML = ""; this. highlightColor = "yellow"; this. setAttribute ('onclick', 'this.clickHandler(event)'); this.setAttribute("context", ""); this.tooltipText = "L=Highlight\nM=Select color + CB menu \nR=Remove highlight ";
Отсутствует
WatsonRus
А может кто сделать кнопку Highlight работающей в последних и ?
Использовать букмарклет
javascript:(function(){var%20count=0,%20text,%20dv;text=prompt("Search%20phrase:",%20"");if(text==null%20||%20text.length==0)return;dv=document.defaultView;function%20searchWithinNode(node,%20te,%20len){var%20pos,%20skip,%20spannode,%20middlebit,%20endbit,%20middleclone;skip=0;if(%20node.nodeType==3%20){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="yellow";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else%20if(%20node.nodeType==1&&%20node.childNodes%20&&%20node.tagName.toUpperCase()!="SCRIPT"%20&&%20node.tagName.toUpperCase!="STYLE"){for%20(var%20child=0;%20child%20<%20node.childNodes.length;%20++child){child=child+searchWithinNode(node.childNodes[child],%20te,%20len);}}return%20skip;}window.status="Searching%20for%20'"+text+"'...";searchWithinNode(document.body,%20text.toUpperCase(),%20text.length);window.status="Found%20"+count+"%20occurrence"+(count==1?"":"s")+"%20of%20'"+text+"'.";})();
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
Использовать букмарклет
Может я не прав, но по-моему в этом месте
if( node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE")
не хватает пары скобок.
node.tagName.toUpperCase() !="STYLE"
Отсутствует
Так работает?
Да, спасибо большое.
Добавлено:
Поправка - в 2.33 работает на ура, в 38.0.1 ESR не пашет. Впрочем, мне важнее была кнопка именно в , ибо в есть неотваливающаяся кнопка в Toolbar buttons, а в той же версии Toolbar buttons в ее нет в списках.
Еще добавлено:
Еще поправка - сегодня вроде и в работает.
villa7
Мое ИМХО - букмарклет это изврат, только для того случая, когда ничего иное не работает. Зачем мне держать включенной панель закладок только для одного букмарклета?
All
Кстати, а почему кнопка Highlight так часто отваливается? Что мозилловцы так часто ломают?
И еще:
У кого есть допуск - надо бы Highlight и в Готовых кнопках поправить на работающий вариант.
Отредактировано WatsonRus (29-06-2015 19:37:58)
Firefox ESR
Отсутствует
Я хочу убрать целые блоки со страницы. Вот таким способом document.body.innerHTML.replace('ненужный_блок', '')
Вот есть допустим блок
Я понимаю, что надо в replace подставить регулярку, которая бы определяла: начиная с <footer class="footer-thin"> до </footer> включая всё что между ними
Только я не знаю как это записать, в регэспах не понимаю.
Отсутствует
toxa
Здесь проще стиль использовать
Я знаю, но именно в этом случае я не хотел делать через стиль.
Способ, предложенный okkamas_knife подходит, я даже сначала и пытался делать что то наподобие.
Только не догадался сделать "метки" по которым удобно резать хтмл. Я пробовал резать просто по словам в коде, ну и конечно запутался.
У меня еще вопросик. В одной из кнопок у меня есть кусочек кода
А как сделать, чтобы этот Listener прицеплялся и к окошкам, которые я открываю скриптами из основного окна?
Отсутствует
Спасибо, okkamas_knife, буду разбираться.
Еще вопрос. Если открываем окно с помощью window.open(), можно ли как то ускорить его открытие?
Понятно, что создание окна требует больше времени, чем открытие новой вкладки, а все же?
Отредактировано toxa (04-07-2015 18:48:55)
Отсутствует
okkamas_knife
Я попробовал создать див:
var div = document.createElement('div') div.innerHTML = '<textarea>TEST TEST TEST</textarea>'; div.setAttribute('class', 'my-div'); div.style.position = 'absolute' var scroll = content.document.body.scrollTop div.style.top = scroll + 200 + 'px' div.style.left = Math.floor(content.document.body.clientWidth/2) - 150 + 'px'; content.document.body.appendChild(div) style = content.document.createElement('style'); style.innerHTML='.my-div { width:300px;height:110px;background-color:#F08080;text-align: center;border: 2px groove black}' content.document.head.appendChild(style);
Но возникли 2 проблемы.
Внутри дива любой хтмл код отображается простым текстом. Даже простейшая textarea не получается.
И второе - на диве не работает выделение и отсутствует контекстное меню.
Отсутствует
okkamas_knife
Как оказалось, все дело в том, что я использовал createElement вместо createElementNS. Если в моем коде подставить createElementNS, тоже все работает.
А почему не годится createElement - даже не представляю...
Отсутствует
А почему не годится createElement - даже не представляю...
У документа браузера XUL namespace по умолчанию.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует