okkamas_knife
или кнопкой сделать свой тултип именно для ссылок..
Было бы замечательно, только я дуб в написании кнопок, сколько не пытался изучать, сниппеты просматривать, не даётся сея наука.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
И как можно убрать все тултипы кроме того что появляется под курсором при наведении на ссылку, замучился уже решение искать.
в about:config browser.chrome.toolbar_tips
Отредактировано bunda1 (25-06-2013 20:22:00)
Отсутствует
bunda1
Это я и хочу сделать, но как оставить тултип при наведении на ссылку.
У меня показывает тултип при наведении на ссылку с browser.chrome.toolbar_tips = false на FF22
Отсутствует
bunda1
Странно, сейчас на чистой 22 проверил, под курсором не показывает, при browser.chrome.toolbar_tips = false
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
bunda1
Не возле панели дополнений, там у меня отключено, не совсем удобно каждый раз вниз смотреть куда ссылка ведет, а сразу под курсором при наведении на ссылку.
Ну а как такое у тебя получается это же не стандартная возможность.
Отсутствует
bunda1
Стоит кнопка Копировать информацию вкладки & Link Tooltips & TextLink
Инициализация
/* :::::::: Link Tooltips ::::::::::::::: */ getBrowser().addEventListener("DOMContentLoaded", function(aEvent) { var doc = new XPCNativeWrapper(aEvent.originalTarget); var links = doc.evaluate("//a[@href and @href!='']", doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var link, i = 0; (link = links.snapshotItem(i)); i++) { link.title = link.title ? link.title + " <" + link.href + ">" : link.href; } }, true); function ucjs_textlink(event){ if(event.button != 0 && event.keyCode != 13) return; var Start = new Date().getTime(); const relative = true; //相対urlを解決するかどうか const ioService = Components.classes['@mozilla.org/network/io-service;1'] .getService(Components.interfaces.nsIIOService); const urlRegex = /(((h?t)?tps?|h..ps?|ftp|((\uff48)?\uff54)?\uff54\uff50(\uff53)?|\uff48..\uff50(\uff53)?|\uff46\uff54\uff50)(:\/\/|\uff1a\/\/|:\uff0f\uff0f|\uff1a\uff0f\uff0f)[-_.!~*'()|a-zA-Z0-9;:\/?,@&=+$%#\[\]\uff0d\uff3f\u301c\uffe3\uff0e\uff01\uff5e\uff0a\u2019\uff08\uff09\uff5c\uff41-\uff5a\uff21-\uff3a\uff10-\uff19\uff1b\uff1a\uff0f\uff1f\uff1a\uff20\uff06\uff1d\uff0b\uff04\uff0c\uff05\uff03\uff5c\uff3b\uff3d]*[-_.!~*)|a-zA-Z0-9;:\/?@&=+$%#\[\]\uff0d\uff3f\u301c\uffe3\uff0e\uff01\uff5e\uff0a\u2019\uff5c\uff41-\uff5a\uff21-\uff3a\uff10-\uff19\uff1b\uff1a\uff0f\uff1f\uff20\uff06\uff1d\uff0b\uff04\uff0c\uff05\uff03\uff5c\uff3b\uff3d]+)/ig; const urlRegex1 = /([-_.!~*'()|a-zA-Z0-9;:\/?,@&=+$%#\[\]\uff0d\uff3f\u301c\uffe3\uff0e\uff01\uff5e\uff0a\u2019\uff08\uff09\uff5c\uff41-\uff5a\uff21-\uff3a\uff10-\uff19\uff1b\uff1a\uff0f\uff1f\uff20\uff06\uff1d\uff0b\uff04\uff0c\uff05\uff03\uff5c\uff3b\uff3d]*[.\uff0e]+[-_.!~*'|a-zA-Z0-9;:\/?@&=+$%#\uff0d\uff3f\u301c\uffe3\uff0e\uff01\uff5e\uff0a\u2019\uff08\uff09\uff5c\uff41-\uff5a\uff21-\uff3a\uff10-\uff19\uff1b\uff1a\uff0f\uff1f\uff1a\uff20\uff06\uff1d\uff0b\uff04\uff0c\uff05\uff03\uff5c]+[.\uff0e/\uff0f]*[-_.!~*|a-zA-Z0-9;:\/?@&=+$%#\uff0d\uff3f\u301c\uffe3\uff0e\uff01\uff5e\uff0a\u2019\uff5c\uff41-\uff5a\uff21-\uff3a\uff10-\uff19\uff1b\uff1a\uff0f\uff1f\uff1a\uff20\uff06\uff1d\uff0b\uff04\uff0c\uff05\uff03\uff5c]+)/ig; const urlRx = /^(ttp|tp|h..p|\uff54\uff54\uff50|\uff54\uff50|\uff48..\uff50)/i; const urlRx1 = /(:\/\/|\uff1a\/\/|:\uff0f\uff0f|\uff1a\uff0f\uff0f)/i; const mailRx = /(^(mailto:|\uff4d\uff41\uff49\uff4c\uff54\uff4f\uff1a)(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$)/; const mailRx1 = /(^(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:"(?:\\[^\r\n]|[^\\"])*")))\@(?:(?:(?:(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+)(?:\.(?:[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+))*)|(?:\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\])))$)/; //ドキュメントとコンテントタイプ var doc = event.originalTarget.ownerDocument; if(doc.contentType != 'text/plain' && doc.contentType != 'text/html' && doc.contentType != 'application/xml' && doc.contentType != 'application/xhtml+xml') return; //designModeなら何もしない if (Components.lookupMethod(doc, 'designMode').call(doc) == 'on') return; var win = doc.defaultView; if(!win)return; var str1, text, str2; //textarea かどうか var node = isParentEditableNode(document.commandDispatcher.focusedElement); if (!node) { // このif ブロックは textarea等以外の処理 //ダブルクリックで選択された選択文字列のレンジを得る var selection = win.getSelection(); var selRange; try{ selRange = selection.getRangeAt(0); }catch(e){ selRange = selection; } if(!selRange)return; //レンジのノードなど text = selection.toString(); if(text == '') return; //debug(text); var sNode = selRange.startContainer; //debug(sNode.nodeName); var soffset = selRange.startOffset; var eNode = selRange.endContainer; //debug(eNode.nodeName); var eoffset = selRange.endOffset; if (sNode != eNode){ eNode = sNode; eoffset = soffset + text.length - 1; } var sOyaNode = oyaNode(sNode); var eOyaNode = oyaNode(eNode); var root; if(sOyaNode == eOyaNode) root = sOyaNode; else root = doc; if (!root) return; //debug("eOyaNode " + eOyaNode.nodeName); //親ブロック要素の文字列をすべて得る const allowedParents = [ /*"a",*/"abbr", "acronym", "address", "applet", "b", "bdo", "big", "blockquote", "body", "caption", "center", "cite", "code", "dd", "del", "dir", "div", "dfn", "dl", "dt", "em", "fieldset", "font", "form", "h1", "h2", "h3", "h4", "h5", "h6", "i", "iframe", "ins", "kdb", "li", "menu", "noframes", "noscript", "object", "ol", "p", "pre", "q", "samp", "small", "span", "strike", "s", "strong", "sub", "sup", "table", "td", "th", "thead", "tt", "u", "var" ]; var xpath = ".//text()[(parent::" + allowedParents.join(" or parent::") + ")]"; var candidates = doc.evaluate(xpath, root, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); //debug("candidates.snapshotLength " + candidates.snapshotLength); //レンジより前にある文字列 var i1 = - 1; for (var i = i1 + 1, len = candidates.snapshotLength; i < len; i++) { if(candidates.snapshotItem(i) != sNode) continue; i1 = i - 1; break; } str1 =""; if (i >= 0) { for (var i = i1; i >= 0 ; i--){ if(sOyaNode == oyaNode(candidates.snapshotItem(i))){ if (candidates.snapshotItem(i).nextSibling && /^br$/i.test(candidates.snapshotItem(i).nextSibling.nodeName)) { //debug(candidates.snapshotItem(i).nodeValue + " " + candidates.snapshotItem(i).nextSibling.nodeName); break; } str1 = candidates.snapshotItem(i).nodeValue + str1; //debug("str1 "+str1); if (/[ ]/.test(str1)) break; } else { break; } } } str2 = str1; if(sNode.nodeValue && soffset > 0) str1 = str1 + sNode.nodeValue.substr(0,soffset); //レンジより後ろにある文字列 for(var i = i1 + 1, len = candidates.snapshotLength; i < len; i++){ if(sOyaNode == oyaNode(candidates.snapshotItem(i))){ str2 = str2 + candidates.snapshotItem(i).nodeValue; //debug("str2 "+str2); if (i > i1 + 1 && /[ ]/.test(candidates.snapshotItem(i).nodeValue)) break; } else { break; } if (candidates.snapshotItem(i).nextSibling && /^br$/i.test(candidates.snapshotItem(i).nextSibling.nodeName)) { break; } } str2 = str2.substr(str1.length + text.length); } else { // この elseブロックは textarea等の処理 // readonlyでないなら何もしない if (!node.hasAttribute("readonly")) return; if (node && (node.type == "text" || node.type == "textarea") && 'selectionStart' in node && node.selectionStart != node.selectionEnd) { var offsetStart = Math.min(node.selectionStart, node.selectionEnd); var offsetEnd = Math.max(node.selectionStart, node.selectionEnd); str1 = node.value.substr(0, offsetStart); text = node.value.substr(offsetStart, offsetEnd-offsetStart); str2 = node.value.substr(offsetEnd); } else { return; } } //すべての文字列の中でのレンジの位置を得る var allStr = str1 + text + str2; var si = str1.length var ei = si + text.length; //全角括弧調整 while(text.match(/^[\u3001\u3002\uff08\uff5b\uff3b\u300c\u3014\u3008\u300a\u300e\u3010\u2018\u201c\u201d\u2019\u226a\uff1c\uff09\uff5d\uff3d\u300d\u3015\u3009\u300b\u300f\u3011\u2018\u201c\u201d\u2019\u226b\uff1e]/)){ si = si + 1; text = text.substr(1); } while(text.match(/[\s\u3001\u3002\uff08\uff5b\uff3b\u300c\u3014\u3008\u300a\u300e\u3010\u2018\u201c\u201d\u2019\u226a\uff1c\uff09\uff5d\uff3d\u300d\u3015\u3009\u300b\u300f\u3011\u2018\u201c\u201d\u2019\u226b\uff1e]$/)){ ei = ei - 1; text = text.substr(0,text.length -1); } //文末の.は無いことに allStr = allStr.replace(/\.$/ ,''); //debug("2 " + str2); //debug("Str " + text); //debug("1 " + str1); //debug("all " + allStr); //すべての文字列の中でURLと思しき文字列を配列として得る var i1, i2; var arrUrl = allStr.match(urlRegex); if(arrUrl){ //見つかったURLと思しき文字列の中にレンジが含まれているかどうか i2=0 for(var i =0,len = arrUrl.length; i < len; i++){ //debug(i + "] " + arrUrl[i]); i1 = allStr.indexOf(arrUrl[i],i2); i2 = i1 + arrUrl[i].length; //debug(i1 <= si && ei <= i2); if(i1 <= si && ei <= i2){ //このURLと思しき文字列の中にレンジが含まれていたので,これをURLとして新しいタブで開きましょう var url = arrUrl[i]; // ~等 を半角に url = url.replace(/\u301c/g,'\uff5e'); url = url.replace(/\uffe3/g,'\uff5e'); // 末尾の )や] の調整 if (/\)$/.test(url)){ if (url.indexOf("(") == -1) url = url.replace(/\)$/,''); } if (/\]$/.test(url)){ if (url.indexOf("[") == -1) url = url.replace(/\]$/,''); } if (/[.,]$/.test(url)){ url = url.replace(/[.,]$/,''); } // ttp等を http等に および :// を 半角に url = /^(ftp|\uff46\uff54\uff50)/i.test(url) ? url.replace(urlRx1,'://') : url.replace(urlRx,'http').replace(urlRx1,'://'); var URIFixup = Components.classes['@mozilla.org/docshell/urifixup;1'] .getService(Components.interfaces.nsIURIFixup); var uri = URIFixup.createFixupURI( url, URIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP ); if(!uri) return; if (!isValidTld(uri)) return; uri = ioService.newURI(uri.spec, null, null); debug('Parsing ucjs_textlink: '+((new Date()).getTime()-Start) +'msec\n'); try{ if(event.shiftKey) saveAsURL(uri,doc); else openNewTab(uri); }catch(e){} return; } } } if( !relative ) return; //すべての文字列の中で相対URLと思しき文字列を配列として得る arrUrl = allStr.match(urlRegex1); if(!arrUrl) return; i2=0 for(var i =0,len = arrUrl.length; i < len; i++){ //debug("Relative " + arrUrl[i]); i1 = allStr.indexOf(arrUrl[i],i2); i2 = i1 + arrUrl[i].length; //debug(i1 +" "+ si +" "+ ei +" "+ i2); if(i1 <= si && ei <= i2){ //debug(arrUrl[i]); //このURLと思しき文字列の中にレンジが含まれていたので,これをURLとして新しいタブで開きましょう var url = arrUrl[i]; // ~等 を半角に url = url.replace(/\u301c/g,'\uff5e'); url = url.replace(/\uffe3/g,'\uff5e'); // 末尾の )や] の調整 if (/\)$/.test(url)){ if (url.indexOf("(") == -1) url = url.replace(/\)$/,''); } if (/\]$/.test(url)){ if (url.indexOf("[") == -1) url = url.replace(/\]$/,''); } if (/[.,]$/.test(url)){ url = url.replace(/[.,]$/,''); } // host名が ftp で始まるなら ftp://に if (/^ftp/.test(url)){ url = "ftp://" + url; } // host名が irc で始まるなら irc:に if (/^irc/.test(url)){ url = "irc://" + url; } //メール? if (mailRx1.test(url)) { url = "mailto:" + url; } //相対パスの処理 if(url.match(/^\.{1,}/)){ var baseURI = ioService.newURI(win.document.documentURI, null, null); url = ioService.newURI(url, null, baseURI).spec; } //debug(url.indexOf(url.match(urlRegex))); if (!mailRx.test(url) && url.indexOf(url.match(urlRegex)) > 1) return; var URIFixup = Components.classes['@mozilla.org/docshell/urifixup;1'] .getService(Components.interfaces.nsIURIFixup); try{ //debug(url); var uri = URIFixup.createFixupURI( url, URIFixup.FIXUP_FLAG_NONE ); //FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP→FIXUP_FLAG_NONE }catch(e){return;} if(!uri) return; if (!isValidTld(uri)) { return; } debug(url); uri = ioService.newURI(uri.spec, null, null); debug('Parsing ucjs_textlink: '+((new Date()).getTime()-Start) +'msec\n'+uri.spec); try{ if(event.shiftKey) saveAsURL(uri,doc); else openNewTab(uri); }catch(e){} return; } } function activeBrowser() { return ('SplitBrowser' in window ? SplitBrowser.activeBrowser : null ) || gBrowser; } function _getFocusedWindow(){ //現在のウインドウを得る var focusedWindow = document.commandDispatcher.focusedWindow; if (!focusedWindow || focusedWindow == window) return window._content; else return focusedWindow; } //レンジの要素が所属する親ブロック要素を得る function oyaNode(aNode){ var pNode = aNode.parentNode; while(pNode && /^(a|abbr|acronym|b|bdo|big|body|code|dfn|em|font|i|kbd|label|pre|q|samp|small|span|strong|sub|sup|tt|var|wbr)$/i.test(pNode.nodeName) ){ pNode = pNode.parentNode; } return pNode; } function isParentEditableNode(node){ //if (Components.lookupMethod(node.ownerDocument, 'designMode').call(node.ownerDocument) == 'on') // return node; while (node && node.parentNode) { try { node.QueryInterface(Ci.nsIDOMNSEditableElement); return node; } catch(e) { } if (/input|textarea/.test(node.localName)) return node; if (node.isContentEditable || node.contentEditable=='true') return node; node = node.parentNode; } return null; } function isValidTld(aURI){ const regexpTLD = new RegExp("\\.(arpa|int|nato|com|net|org|info|biz|name|pro|museum|coop|aero|edu|gov|mil|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bu|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cp|cr|cs|sk|cu|cv|cx|cy|cz|dd|de|dg|dj|dk|dm|do|dz|ea|ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|ic|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|pa|pc|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|ta|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|wg|ws|yd|ye|yt|yu|za|zm|zr|zw)\\.?$",""); const regexpIP = new RegExp("^[1-2]?[0-9]?[0-9]\\.[1-2]?[0-9]?[0-9]\\.[1-2]?[0-9]?[0-9]\\.[1-2]?[0-9]?[0-9]$",""); var host, tlds; try { host = aURI.host.split('/')[0]; } catch(e) { if (aURI.spec.match(/^(.+?\/\/(?:[^\/]+@)?)([^\/]+)(:\d+)?(?:.*)$/)) { host = RegExp.$2; } else if (aURI.spec.match(/^(mailto:(?:[^\/]+@)?)([^\/]+)(:\d+)?(?:.*)$/)){ host = RegExp.$2; } } //debug("host " + host); if (!host) return false; if (getVer() < 3.0){ if (regexpTLD.test(host)) return true; else return (regexpIP.test(host)); } else { var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"] .getService(Components.interfaces.nsIEffectiveTLDService); try { var tld = eTLDService.getPublicSuffixFromHost(host); return regexpTLD.test('.'+tld); } catch(e) { return (regexpIP.test(host)); } } } function saveAsURL(uri,doc){ var linkText = uri.spec; //Thunderbird if (/^chrome:\/\/messenger\/content\//.test(window.location.href)) { // URL Loading Security Check var focusedWindow = document.commandDispatcher.focusedWindow; var sourceURL = getContentFrameURI(focusedWindow); const nsIScriptSecurityManager = Components.interfaces.nsIScriptSecurityManager; var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"] .getService(nsIScriptSecurityManager); try { secMan.checkLoadURIStr(sourceURL, uri.spec, nsIScriptSecurityManager.STANDARD); } catch (e) { throw "Load of " + url + " denied."; } saveURL( uri.spec, linkText, null, true ); return; } // urlSecurityCheck wanted a URL-as-string for Fx 2.0, but an nsIPrincipal on trunk if(activeBrowser().contentPrincipal) urlSecurityCheck(uri.spec, activeBrowser().contentPrincipal,Ci.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL); else urlSecurityCheck(uri.spec, activeBrowser().currentURI.spec,Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT); saveURL( uri.spec, linkText, null, true, false, makeURI(doc.location.href, doc.characterSet) ); } function openNewTab(uri){ //Thunderbird if (/^chrome:\/\/messenger\/content\//.test(window.location.href)) { // Make sure we are allowed to open this URL // URL Loading Security Check var focusedWindow = document.commandDispatcher.focusedWindow; var sourceURL = getContentFrameURI(focusedWindow); const nsIScriptSecurityManager = Components.interfaces.nsIScriptSecurityManager; var secMan = Components.classes["@mozilla.org/scriptsecuritymanager;1"] .getService(nsIScriptSecurityManager); try { secMan.checkLoadURIStr(sourceURL, uri.spec, nsIScriptSecurityManager.STANDARD); } catch (e) { throw "Load of " + url + " denied."; } var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"] .getService(Components.interfaces.nsIExternalProtocolService); protocolSvc.loadUrl(uri); return; } // urlSecurityCheck wanted a URL-as-string for Fx 2.0, but an nsIPrincipal on trunk if(activeBrowser().contentPrincipal) urlSecurityCheck(uri.spec, activeBrowser().contentPrincipal,Ci.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL); else urlSecurityCheck(uri.spec, activeBrowser().currentURI.spec,Ci.nsIScriptSecurityManager.DISALLOW_SCRIPT); if( (event.ctrlKey) ){ loadURI(uri.spec, null, null, false); }else{ if ('TreeStyleTabService' in window) TreeStyleTabService.readyToOpenChildTab(activeBrowser().selectedTab); openNewTabWith(uri.spec, null, null, null, false) //activeBrowser().loadOneTab(uri.spec, null, null, null, getPref("browser.tabs.loadInBackground", "bool", false), false); //activeBrowser().selectedTab = activeBrowser().addTab(uri.spec); } } function getVer(){ const Cc = Components.classes; const Ci = Components.interfaces; var info = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo); // このコードを実行しているアプリケーションの名前を取得する var ver = parseInt(info.version.substr(0,3) * 10,10) / 10; return ver; } function getPref(aPrefString, aPrefType, aDefault){ var xpPref = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch2); try{ switch (aPrefType){ case "str": return xpPref.getCharPref(aPrefString).toString(); break; case "int": return xpPref.getIntPref(aPrefString); break; case "bool": default: return xpPref.getBoolPref(aPrefString); break; } }catch(e){ } return aDefault; } function debug(aMsg){ const Cc = Components.classes; const Ci = Components.interfaces; Cc["@mozilla.org/consoleservice;1"] .getService(Ci.nsIConsoleService) .logStringMessage(aMsg); } } var textLinkForSidebar = { init: function(event){ try{ var doc = event.originalTarget; if (!doc.location) return; if(doc.location.href == "chrome://browser/content/web-panels.xul"){ doc.addEventListener('dblclick',function(event){setTimeout(ucjs_textlink,100,event);},false); doc.addEventListener('keypress',function(event){ucjs_textlink(event);},false); } }catch(e){} }, uninit: function(event){ try{ var doc = event.originalTarget; if (!doc.location) return; if(doc.location.href == "chrome://browser/content/web-panels.xul"){ doc.removeEventListener('dblclick',function(event){setTimeout(ucjs_textlink,100,event);},false); doc.removeEventListener('keypress',function(event){ucjs_textlink(event);},false); } }catch(e){} } } //for contents area if (/^chrome:\/\/messenger\/content\//.test(window.location.href)) { var target = document.getElementById("messagepane"); } else { var target = document.getElementById("appcontent"); } target.addEventListener('dblclick',function(event){setTimeout(ucjs_textlink,100,event);},false); target.addEventListener('keypress',function(event){ucjs_textlink(event);},false); //for already loaded chrome://browser/content/web-panels.xul if (!/^chrome:\/\/messenger\/content\//.test(window.location.href)) { setTimeout(function(){ try{ var doc = document.getElementById('sidebar').contentDocument; if(doc && doc.location && doc.location.href == "chrome://browser/content/web-panels.xul") doc.addEventListener('dblclick',function(event){setTimeout(ucjs_textlink,100,event);},false); doc.addEventListener('keypress',function(event){ucjs_textlink(event);},false); }catch(e){} },1000); } //for sidebar document onload event Listener window.document.addEventListener('load', textLinkForSidebar.init, true); window.document.addEventListener('unload', textLinkForSidebar.uninit, true);
Вот как бы сделать что бы она игнорировала browser.chrome.toolbar_tips = false, или другое что придумать.
Отредактировано villa7 (25-06-2013 23:34:02)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Как попасть в настройки DOM Inspector ? Вот тут : http://forum.mozilla-russia.org/viewtopic.php?id=59470 , http://forum.mozilla-russia.org/viewtop … 61#p617461 , я описываю что мне нужно убрать мельтешащую строку загрузки... первую тему закрыли , во второй отправили сюда , дополнение поставил , а попасть в сами настройки этого дополнения не могу. Что делать ?
Отсутствует
iDev.Pi
Самое странное что я пока не могу найти где этот самый userchrome.css , даже его примера example не нашёл.
Ещё раз убеждаюсь , что здесь дают советы тоже такие же люди , которые мало чего знают... почему-то не здесь , а в гугле узнал про about:config... но.... почему about:config ? Ведь логичнее было бы писать firefox:config.
Отредактировано FireFox Future (26-06-2013 15:21:32)
Отсутствует
FireFox Future
>Как попасть в настройки DOM Inspector ?
Меню➜Инструменты➜Веб разработка➜Инспектор DOM
https://forum.mozilla-russia.org/viewto … 91#p605591
http://forum.mozilla-russia.org/viewtop … 77#p432477 — как пользоваться
Если есть Custom Buttons, можете поставить кнопку Attributes ...
Отсутствует
здесь дают советы тоже такие же люди, которые мало чего знают...
им просто лень для каждого новичка устраивать лекции на темы, о которых уже всё написано и эти новички ленятся искать и читать.
Поищешь получше - найдёшь. Не найдёшь - значит не больно-то оно тебе и надо было
mzfx
Отсутствует
FireFox Future
Просто бросьте папку chrome в папку профиля, найдете?
Не знаю то ли вы хотели, сделал шаблон, можно настраивать под себя. Статус панель справа от дополнения.
http://rghost.ru/47035036
Отредактировано villa7 (26-06-2013 19:09:11)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Вот как бы сделать что бы она игнорировала browser.chrome.toolbar_tips = false, или другое что придумать.
Не знаю как сделать?
Добавлено 26-06-2013 21:08:49
Кто нибудь знает как убрать тултип только в адресной строке, 23, browser.chrome.toolbar_tips в false не вариант.
// Удалить подсказки из адресной строки document.getElementById("identity-box").setAttribute("onmouseover", "this.removeAttribute('tooltiptext')"); document.getElementById("go-button").setAttribute("onmouseover", "this.removeAttribute('tooltiptext')");
Отредактировано bunda1 (26-06-2013 22:13:50)
Отсутствует
bunda1
Ага, убрал из иконок в адресной, ну а выскакивающий урл перетерпим, что делать. Как всегда спасибо за помощь.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
bunda1
Ага, убрал из иконок в адресной, ну а выскакивающий урл перетерпим, что делать. Как всегда спасибо за помощь.
Что за выскакивающий урл ?
Отсутствует
Не проканало , получилось следующее... если убрать Extended Statusbar , то надпись появляется и почему-то строго по центру... и такое ощущение что оно как бы на половину опущено ниже положенного.
Отсутствует
FireFox Future
>если убрать Extended Statusbar...
А зачем Вы его убрали? Villa7 cпециально старался, чтобы надпись оказалась после «время» (margin-left: 700px), фон сделал прозрачный.
>такое ощущение что оно как бы на половину опущено ниже положенного.
Меняйте цифры после margin-top: (в помощь: http://zapomni.ru/css/margins.htm#mar)
Отсутствует
negodnik
Аесли не убирать , то получается вот что :
http://s24.postimg.org/xdjtm0jzn/img_css.png
В принципе , оно именно вот на эту величину оказывается выше что с при ESB что без него.
Добавлено 27-06-2013 02:37:58
Всё , разобрался. причина вот в этом :
margin-top: -26px !important;}
Поставило 14px и всё встало как надо.
Villa7 , спасибо вам за оказанную помощь
Отредактировано FireFox Future (27-06-2013 02:47:35)
Отсутствует
Что за выскакивающий урл ?
При переполнении адресной строки, когда наводишь курсор на адрес.
http://www.bild.me/bild.php?file=2316591ScreenShot_8.gif
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
Что-то подобного я не заметил.
Отсутствует
bunda1
Ага, убрал из иконок в адресной, ну а выскакивающий урл перетерпим.......
addEventListener("popupshowing", function(e) { if ( e.originalTarget.label == gURLBar.value ) e.preventDefault(); }, true, window );
Добавлено 27-06-2013 23:19:25
Этим кодом наверно можно любой tooltip (всплывающая подсказка) убрать.
Отредактировано bunda1 (27-06-2013 23:19:25)
Отсутствует