Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№122625-06-2013 19:37:49

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

okkamas_knife

или кнопкой сделать свой тултип именно для ссылок..

Было бы замечательно, только я дуб в написании кнопок, сколько не пытался изучать, сниппеты просматривать, не даётся сея наука.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№122725-06-2013 20:21:33

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

villa7 пишет

И как можно убрать все тултипы кроме того что появляется под курсором при наведении на ссылку, замучился уже решение искать.

в about:config browser.chrome.toolbar_tips

Отредактировано bunda1 (25-06-2013 20:22:00)

Отсутствует

 

№122825-06-2013 20:59:11

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

bunda1
Это я и хочу сделать, но как оставить тултип при наведении на ссылку.
7e2952430c2ct.jpg
okkamas_knife говорит можно кнопку для этого сделать, но как?


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№122925-06-2013 21:28:54

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

villa7 пишет

bunda1
Это я и хочу сделать, но как оставить тултип при наведении на ссылку.

У меня показывает тултип при наведении на ссылку с browser.chrome.toolbar_tips = false на FF22 :(

Отсутствует

 

№123025-06-2013 21:59:16

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

bunda1
Странно, сейчас на чистой 22 проверил, под курсором не показывает, при browser.chrome.toolbar_tips = false


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№123125-06-2013 22:22:53

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

под курсором это значит внизу у панели дополнений, так?

Отсутствует

 

№123225-06-2013 22:54:36

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

bunda1
Не возле панели дополнений, там у меня отключено, не совсем удобно каждый раз вниз смотреть куда ссылка ведет, а сразу под курсором при наведении на ссылку.
b5870e5b8d0bt.jpg


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№123325-06-2013 22:57:21

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

villa7 пишет

bunda1
Не возле панели дополнений, там у меня отключено, не совсем удобно каждый раз вниз смотреть куда ссылка ведет, а сразу под курсором при наведении на ссылку.

Ну а как такое у тебя получается это же не стандартная возможность.

Отсутствует

 

№123425-06-2013 23:12:54

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

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)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№123526-06-2013 14:18:46

FireFox Future
Участник
 
Группа: Members
Зарегистрирован: 13-06-2013
Сообщений: 514
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

Как попасть в настройки DOM Inspector ? Вот тут : http://forum.mozilla-russia.org/viewtopic.php?id=59470 , http://forum.mozilla-russia.org/viewtop … 61#p617461 , я описываю что мне нужно убрать мельтешащую строку загрузки... первую тему закрыли , во второй отправили сюда , дополнение поставил , а попасть в сами настройки этого дополнения не могу. Что делать ?

Отсутствует

 

№123626-06-2013 14:41:12

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future
прочитать правила раздела. Там есть полезная ссылка на фак.


mzfx

Отсутствует

 

№123726-06-2013 15:11:12

FireFox Future
Участник
 
Группа: Members
Зарегистрирован: 13-06-2013
Сообщений: 514
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

iDev.Pi
Самое странное что я пока не могу найти где этот самый userchrome.css , даже его примера example не нашёл.

Ещё раз убеждаюсь , что здесь дают советы тоже такие же люди , которые мало чего знают... почему-то не здесь , а в гугле узнал про about:config... но.... почему about:config ? Ведь логичнее было бы писать firefox:config.

Отредактировано FireFox Future (26-06-2013 15:21:32)

Отсутствует

 

№123826-06-2013 15:54:11

negodnik
 
 
Группа: Members
Зарегистрирован: 14-03-2013
Сообщений: 526
UA: Firefox 21.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future
>Как попасть в настройки DOM Inspector ?
Меню➜Инструменты➜Веб разработка➜Инспектор DOM
https://forum.mozilla-russia.org/viewto … 91#p605591
http://forum.mozilla-russia.org/viewtop … 77#p432477 — как пользоваться
Если есть Custom Buttons, можете поставить кнопку Attributes ...

Отсутствует

 

№123926-06-2013 16:00:52

iDev.Pi
баг-репортёр
 
Группа: Extensions
Зарегистрирован: 31-01-2010
Сообщений: 2718
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future пишет

здесь дают советы тоже такие же люди, которые мало чего знают...

им просто лень для каждого новичка устраивать лекции на темы, о которых уже всё написано и эти новички ленятся искать и читать.
Поищешь получше - найдёшь. Не найдёшь - значит не больно-то оно тебе и надо было :)


mzfx

Отсутствует

 

№124026-06-2013 16:53:06

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future
Просто бросьте папку chrome в папку профиля, найдете?
Не знаю то ли вы хотели, сделал шаблон, можно настраивать под себя. Статус панель справа от дополнения.
http://rghost.ru/47035036
c3357301ee44t.jpg

Отредактировано villa7 (26-06-2013 19:09:11)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№124126-06-2013 20:54:46

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

villa7 пишет

Вот как бы сделать что бы она игнорировала browser.chrome.toolbar_tips = false, или другое что придумать.

Не знаю как сделать?

Добавлено 26-06-2013 21:08:49

villa7 пишет

Кто нибудь знает как убрать тултип только в адресной строке, [firefox] 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)

Отсутствует

 

№124226-06-2013 23:00:12

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

bunda1
Ага, убрал из иконок в адресной, ну а выскакивающий урл перетерпим, что делать. Как всегда спасибо за помощь.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№124326-06-2013 23:13:05

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

villa7 пишет

bunda1
Ага, убрал из иконок в адресной, ну а выскакивающий урл перетерпим, что делать. Как всегда спасибо за помощь.

Что за выскакивающий урл ?

Отсутствует

 

№124427-06-2013 00:33:04

FireFox Future
Участник
 
Группа: Members
Зарегистрирован: 13-06-2013
Сообщений: 514
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

Не проканало , получилось следующее... если убрать Extended Statusbar , то надпись появляется и почему-то строго по центру... и такое ощущение что оно как бы на половину опущено ниже положенного.

Отсутствует

 

№124527-06-2013 01:18:30

negodnik
 
 
Группа: Members
Зарегистрирован: 14-03-2013
Сообщений: 526
UA: Firefox 21.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future
>если убрать Extended Statusbar...
А зачем Вы его убрали? Villa7 cпециально старался, чтобы надпись оказалась после «время» (margin-left: 700px), фон сделал прозрачный.

>такое ощущение что оно как бы на половину опущено ниже положенного.
Меняйте цифры после margin-top: (в помощь: http://zapomni.ru/css/margins.htm#mar)

Отсутствует

 

№124627-06-2013 02:33:17

FireFox Future
Участник
 
Группа: Members
Зарегистрирован: 13-06-2013
Сообщений: 514
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

negodnik
Аесли не убирать , то получается вот что :

img_css.png
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)

Отсутствует

 

№124727-06-2013 07:49:02

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

bunda1 пишет

Что за выскакивающий урл ?

При переполнении адресной строки, когда наводишь курсор на адрес.
http://www.bild.me/bild.php?file=2316591ScreenShot_8.gif


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№124827-06-2013 09:51:49

FireFox Future
Участник
 
Группа: Members
Зарегистрирован: 13-06-2013
Сообщений: 514
UA: Firefox 22.0

Re: Настройка внешнего вида Firefox в userChrome.css

villa7
Что-то подобного я не заметил.

Отсутствует

 

№124927-06-2013 12:34:57

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 23.0

Re: Настройка внешнего вида Firefox в userChrome.css

FireFox Future
Наверное выставлено browser.chrome.toolbar_tips = false


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№125027-06-2013 23:15:23

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4806
UA: Firefox 3.6

Re: Настройка внешнего вида Firefox в userChrome.css

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)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]