if (curl && (curl. host == cdurl. host) && (curl. spec != "некоторая другая ссылка"))
Спасибо! А если ссылок много? Или если нельзя ходить по ссылкам /forum/* и /blog/*
Или ещё вопрос: если наоборот ссылок привеликое множество и нужно чтобы переходил по ссылкам только site.ru/forum/*
Отсутствует
И в чем будет польза такой справки?
Возможность без лишних движений узнать id кнопки.
При наличии Attributes Inspector 0.4.5.1 (2011-02-12) никакой пользы.
Отсутствует
здравствуйте .а не подскажите как можно сделать кнопочку наподобии Translate page/selected with Google(Firefox) только штобы вместо перевода при выделении был писк маил по энциклопедиям или википедия . Вообще если чесно хотелось бы что-то типа шаблона того окна что всплывает при переводе выделкного толь чтобы я сам мог туда вписать html код странички .
вообщем ковырял ковырял и получилось вот что : выдяляеш слово жмеш кнопку и в не большом окошке появляются результаты поиска по энциклопедиям маил.ru ,результаты конечно с сылками при щелчке по сылке окошко исчезает и сылка окрывается в тойже вкладке .Подскажите пожалуста как сделать чтоб сылки открывались в том же маленьком окошке .
вот код:
const UJS_TOOLBAR_ID = "ujs_toolbar";
const UJS_GOOGLE_TRANSLATE_FRAME_ID = "ujs_googletranslateframe";
function cbTranslatorButton (browser)
{
this. doc = browser. contentDocument;
this. win = browser. contentDocument. defaultView;
}
cbTranslatorButton. prototype =
{
doc: null,
win: null,
toolbar: null,
clse: null,
frame: null,
grabX: 0,
origX: 0,
grabY: 0,
origY: 0,
handleEvent: function (event)
{
switch (event. type)
{
case "mousedown":
this. tbOnMouseDown (event);
break;
case "mousemove":
this. tbOnMouseMove (event);
break;
case "mouseup":
this. tbOnMouseUp (event);
break;
case "click":
this. clseOnClick (event);
break;
case "load":
this. frameOnLoad (event);
break;
default:;
}
},
tbOnMouseMove: function (event)
{
this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px';
this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px';
},
tbOnMouseUp: function (event)
{
this. doc. removeEventListener ('mousemove', this, false);
this. toolbar. style. zIndex = 9997;
},
tbOnMouseDown: function (event)
{
if (event. target == this. toolbar)
{
event. preventDefault ();
this. toolbar. style. zIndex = 9998;
this. grabX = event. clientX;
this. grabY = event. clientY;
this. origX = parseInt (this. toolbar. style. left);
this. origY = parseInt (this. toolbar. style. top);
this. doc. addEventListener ('mousemove', this, false);
this. doc. addEventListener ('mouseup', this, false);
}
},
removeEventListener: function (element, eventType, captureFlag)
{
try
{
element. removeEventListener (eventType, this, captureFlag);
}
catch (err) {}
},
removeElement: function (element)
{
try
{
element. parentNode. removeChild (element);
}
catch (err) {}
},
clseOnClick: function (event)
{
this. clse. removeEventListener ('click', this, false);
this. removeEventListener (this. toolbar, 'mousedown', false);
this. removeEventListener (this. doc, 'mousemove', false);
this. removeEventListener (this. doc, 'mouseup', false);
this. removeEventListener (this. frame, 'load', false);
this. removeElement (this. toolbar);
this. removeElement (this. frame);
this. frame = null;
this. clse = null;
this. toolbar = null;
this. win = null;
this. doc = null;
},
ujs_createWindow: function (txt)
{
var doc = this. doc;
var win = this. win;
var h, w;
var txtLen = txt. length;
var tbId = UJS_TOOLBAR_ID;
if (arguments. length > 2)
tbId += arguments [2];
var toolbar = doc. getElementById (tbId);
if (toolbar)
toolbar. parentNode. removeChild (toolbar);
toolbar = doc. createElement ('div');
this. toolbar = toolbar;
toolbar. id = tbId;
if (arguments. length == 5)
{
w = arguments [3];
h = arguments [4]
}
else
{
h = 15;
w = 20;
if (txtLen > 2000)
{
h = 50;
w = 66
}
else if (txtLen > 250)
{
h = 25;
w = 33
};
h = parseInt (h * win. innerHeight / 30);
w = parseInt (w * win. innerWidth / 50)
};
var title = (arguments. length > 1) ?arguments [1]: '<a href="http://translate.google.com/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">Google Translate</a>';
toolbar. innerHTML = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC" title="Close" width="18" height="18"> ' + title + '<div></div>';
toolbar. setAttribute('style', 'position:fixed;background:white;display:block;visibility:hidden;left:0;top:0;height:auto;width:' + w + 'px;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;');
toolbar. addEventListener ('mousedown', this, false);
var clse = toolbar. firstChild;
this. clse = clse;
clse. setAttribute ('style', 'float:right;background:white;padding:0;margin:0;border:none;cursor:pointer;');
clse. addEventListener ('click', this, false);
var textbar = toolbar. lastChild;
textbar. innerHTML = txt;
textbar. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:' + h + 'px;width:auto;overflow:auto;cursor:text;');
doc. documentElement. appendChild (toolbar);
var halfWidth = parseInt (toolbar. offsetWidth / 2);
var strict = doc. compatMode == 'CSS1Compat';
var mX = (strict?
doc. documentElement. clientWidth:
doc. body. clientWidth) - toolbar. offsetWidth;
var mY = (strict?
doc. documentElement. clientHeight:
doc. body. clientHeight) - toolbar. offsetHeight;
var lastClickX = win. cbTranslateButton2X;
var lastClickY = win. cbTranslateButton2Y;
toolbar. style. left = ((lastClickX < mX + halfWidth)?
(lastClickX > halfWidth?
(lastClickX - halfWidth):
0):
mX) + "px";
toolbar. style. top = ((lastClickY < mY)?
lastClickY:
mY) + "px";
toolbar. style. visibility = 'visible';
return textbar;
},
frameOnLoad: function (event)
{
var fr = event. currentTarget;
fr. removeEventListener ('load', this, false);
var tbId = fr. id. substring (UJS_GOOGLE_TRANSLATE_FRAME_ID. length);
var toolbar = this. doc. getElementById (UJS_TOOLBAR_ID + tbId);
var frdoc = fr. contentDocument;
var a = frdoc. getElementById ('q');
var title = (a && !/#808080/. test (a. innerHTML))?
' - ' + a. textContent. replace (/^.+: | [(\xBB].+$/g, ''):
'';
var result = frdoc. getElementById ('collMain'). innerHTML;
var ancor = toolbar. getElementsByTagName ("a") [0];
ancor. innerHTML += title;
ancor. nextSibling. innerHTML = result;
setTimeout
(
function ()
{
fr. parentNode. removeChild (fr);
},
0
);
},
google_translate: function (language)
{
var doc = this. doc;
var win = this. win;
var t = document. commandDispatcher. focusedWindow. getSelection (). toString ();
var lng = (win. navigator. language == 'ru')? 'ru': 'en';
if (t && location. hostname != 'search.enc.mail.ru')
{
this. ujs_createWindow
(
(lng == 'ru'?
'\u041F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u043C':
'Translating'
) +
'\u2026',
'<a href="http://search.enc.mail.ru/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">энциклопедии</a>',
btoa (escape (t))
);
var gtfId = UJS_GOOGLE_TRANSLATE_FRAME_ID;
var fr = doc. getElementById (gtfId);
if (!fr)
fr = doc. createElement ('iframe');
this. frame = fr;
fr. setAttribute ('id', gtfId + btoa (escape (t)));
fr. setAttribute ('frameborder', '0');
fr. setAttribute ('style', 'width:0px;height:0px;visibility:hidden;position:absolute;left:-999em;');
fr. setAttribute
(
'src',
qq +
encodeURIComponent (t) +
'&hl='
//lng +
//'&langpair=' +
//language +
//'&tbb=1&ujs=gtt'
);
fr. addEventListener ('load', this, false);
doc. documentElement. appendChild (fr);
}
else
{
}
}
};
var ct = getBrowser (). selectedTab;
if (!ct. cbTranslateButton5)
ct. cbTranslateButton5 = [];
var translator = new cbTranslatorButton (getBrowser ());
ct. cbTranslateButton5. push (translator);
translator. google_translate ("auto|ru");
Отредактировано Ste_pan (18-02-2011 14:15:52)
Отсутствует
Anton второй вопрос, те обратная противоположность коду
var buttonName = "setBackgroundColor";
var btn = document. getElementsByAttribute ("cb-name", buttonName) [0];
alert (btn. cbCommand + "\n---\n" + btn. cbInitCode);
те записать две секции обратно используя метод setAttribute, я попытался сделать, но ничего не вышло.
Подскажи как, если не сложно, ну и если это вообще возможно реализовать из кнопки.
"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах
Отсутствует
Выделить кодКод:
if (curl && (curl. host == cdurl. host) && (curl. spec != "некоторая другая ссылка"))Спасибо! А если ссылок много? Или если нельзя ходить по ссылкам /forum/* и /blog/*
Или ещё вопрос: если наоборот ссылок привеликое множество и нужно чтобы переходил по ссылкам только site.ru/forum/*
var include = ["/forum/", "/blog/"]; var exclude = ["site.ru/forum/"]; function makeURL (url) { var uri = makeURI (url); try { uri = uri. QueryInterface (Components. interfaces. nsIURL); } catch (e) { uri = null; } return uri; } var doc = gBrowser. contentDocument; var cdurl = makeURL (doc. location. href); cdurl. ref = ""; var links = Array. map ( doc. links, function (link) { return link. href; } ). filter (function(uri) { return (!include. length || include. some (function (s) { if (s instanceof RegExp) return uri. match (s) != null; else return uri. indexOf (s) != -1; })) && !exclude. some (function (s) { if (s instanceof RegExp) return uri. match (s) != null; else return uri. indexOf (s) != -1; }); }); var inlinks = []; var curl; for (var i = 0; i < links. length; i++) { curl = makeURL (links [i]); if (curl && (curl. host == cdurl. host)) inlinks. push (links [i]); } if (inlinks. length != 0) { var ind = Math. floor (Math. random () * inlinks. length); loadURI (inlinks [ind], makeURL (gBrowser. contentDocument. location. href)); }
Сначала производится отбор ссылок по совпадению с шаблонами из массива include, затем из этих отобранных ссылок исключаются ссылки, совпадающие с шаблонами из массива exclude.
если нельзя ходить по ссылкам /forum/* и /blog/*
var include = []; var exclude = ["/forum/", "/blog/"]; // [/\/forum\/.*/, /\/blog\/.*/]
чтобы переходил по ссылкам только site.ru/forum/*
Примерно так.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
не давно поставил себе 4 firefox ,красиво конечно но расширения многие еще не обновились а может и не обновятся ....
вобщем есть расширение SearchWP 2.4.2 если ручками все делать то все нормально а если из скрипта то получить значение searchbox.value запросто а присвоить получается тока если обект получен по фокусу а если сбросить фокус возращается старое значение подскажите почему так происходит
я решил это так
this.xt = function(sh ,ta){
var sh = getSelectedText();
if(sh){
document.getElementById('searchbar').focus()
var ta = document.commandDispatcher.focusedElement
ta.value = sh
var hn = document.getElementById("searchwp-highlight-button")
var en = document.getElementById("searchwp-highlight-button").doubleclick();//двойной клик по кнопке подсветки слов из searchbar
document.getElementById("urlbar").focus()
Отредактировано Ste_pan (21-02-2011 15:35:10)
Отсутствует
записать две секции обратно
var buttonId = "custombuttons-button9"; var buttonLink = custombuttons. makeButtonLink ("update", buttonId); var params = custombuttons. cbService. getButtonParameters (buttonLink). wrappedJSObject; params. code = "new code"; params. initCode = "new initialization code"; params. wrappedJSObject = params; custombuttons. cbService. installButton (params);
Можна сделать кнопку чтобы открывался сайт с своим внешним IP, типа "http://внешний_ip/"
Не понимаю.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
код кнопки, при нажатии на которую откроется обычная пустая активная вкладка.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Attributes Inspector 0.4.6 (2011-03-11)
+ Добавлена возможность использовать inIFlasher (как DOM Inspector) вместо добавления атрибута для подсветки узла под курсором (по умолчанию отключено из-за возможной некорректной подсветки и появления артефактов).
+ Добавлено копирование содержимого всплывающей подсказки по Ctrl+Shift+C.
+ Добавлено обновление всплывающей подсказки при изменении атрибутов.
* Улучшено подавление сторонних всплывающих подсказок.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Anton
Firefox 4.013 + CB 0.0.5.2
кнопка которая постоянно скрывает Chrome-заголовок, при старте Firefox срабатывает с опозданием, на полсекунды. На FF 3.6 + CB 0.0.5.2 такой проблемы не было.
Подскажи пожалуйста как это исправить?
function hideChrome() { if (navigator.platform == "Win32") { window.moveTo(0,0); window.maximize(); document.getElementById("main-window").setAttribute('hidechrome','true'); // preserve small area for taskbar to appear window.resizeTo(screen.availWidth, screen.availHeight-2); } else { document.getElementById("main-window").setAttribute('hidechrome','true'); window.moveTo(0,0); window.resizeTo(screen.availWidth, screen.availHeight); window.maximize(); } } // COMMENT OUT THE NEXT LINE TO START BROWSER NORMALLY hideChrome(); this.leftclick = function(evt){ function showChrome() { if (navigator.platform == "Win32") { document.getElementById("main-window").setAttribute('hidechrome','false'); window.resizeTo(screen.availWidth, screen.availHeight); window.maximize(); window.resizeTo(screen.availWidth, screen.availHeight); } else { document.getElementById("main-window").setAttribute('hidechrome','false'); window.maximize(); window.maximize(); } } function toggleChrome() { var mainWindow = document.getElementById("main-window"); var isFullScreen = mainWindow.getAttribute('hidechrome'); if (isFullScreen == "" || isFullScreen == 'false') { hideChrome(); } else { showChrome(); } } toggleChrome(); } this. gQuot = {}; this. gQuot. __proto__ = custombuttons. gQuot; this. gQuot. dcDelay = 0; this. setAttribute ('onclick', 'this.gQuot.mHandler(event, this)'); this.style.opacity = '.65'; this.setAttribute('onmouseover', 'custombuttons.ButtonBrt(event);' ); this.setAttribute('onmouseout', 'custombuttons.ButtonDim(event);' );
document.getElementById("main-window").setAttribute('hidechrome','true'); window.restore(); window.maximize(); window.restore();
при старте Firefox срабатывает с опозданием.
Отредактировано bunda1 (12-03-2011 00:21:34)
Отсутствует
Помогите! Нужно приделать защелку к кнопке "Показать/скрыть панель закладок".
Чтобы при перезагрузке сохранялось выбранное состояние.
var toolbar = document.getElementById("PersonalToolbar");
toolbar.collapsed = !toolbar.collapsed;
document.persist(toolbar.id, "collapsed");
Отсутствует
Stf(Firefox 3.6 - 4.013)
Сохраняет выделенный текст в txt файл.Left => Сохранить выделенный текст в txt файл.
Middle => Mеню кнопки.
Right => Сохранить весь текст на странице в txt файл.
А можно сделать, что бы кнопка ещё добавляла текст в уже существующий файл, а не только замещала его?
Возможность замещения желательно то же оставить.
Отсутствует
mserv
наверное можно но очень сложно, не мой уровень
может попробуй эту кнопку Fast Notes http://forum.mozilla-russia.org/viewtop … 61#p418961
или здесь посмотри Add-on Search Results for save text :: Add-ons for Firefox
Отсутствует
Не могу найти кнопку "поиск выделенного в русском гугле".
Помогите! Спасибо.
Search and open http://forum.mozilla-russia.org/viewtop … 56#p446956
+ Google (Language: RU) :: Дополнения Firefox
Отредактировано bunda1 (13-03-2011 12:53:00)
Отсутствует
mserv наверное можно но очень сложно, не мой уровень может попробуй эту кнопку Fast Notes http://forum.mozilla-russia.org/viewtop … 61#p418961или здесь посмотри Add-on Search Results for save text :: Add-ons for Firefox
Дополнение у меня есть, называется так же как и кнопка stf. Просто хотел от него отказаться в пользу кнопки. А где ты её брал, там нельзя попросить доработать? Или может здесь кто знает, помогите.
Отсутствует
bunda1
По Вашей ссылке https://addons.mozilla.org/ru/firefox/a … nguage-ru/, при попытке загрузки открывается HML- текст.
Что с ним делать не знаю!?
Отсутствует
Chis
http://159.148.226.201/google-language-ru-.xml
1) положи в C:\Program Files\Mozilla Firefox\searchplugins
2) Рестартируй Firefox
Отредактировано bunda1 (13-03-2011 16:56:36)
Отсутствует