okkamas_knife
Можно переконвертировать перед сохранением в utf-8:
var uc = Components. classes ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Components. interfaces. nsIScriptableUnicodeConverter); uc. charset = "utf-8"; htmlSource = uc. ConvertFromUnicode (htmlSource);
в head html должна быть инструкция
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
okkamas_knife
реально ли из CB загружать страничку парсить её заменяя определённый текст и только потом отдавать браузеру на дальнейшую обработку и отображение?
В принципе реально, но в плане практической реализации это неподходящий инструмент.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
okkamas_knife
Пример перекодирования в data:// : http://pastebin.mozilla-russia.org/102468
Размер картинки:
var img = document. getAnonymousElementByAttribute (this, "class", "toolbarbutton-icon"); img. style. maxWidth = "16px"; img. style. maxHeight = "16px";
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
okkamas_knife
может я чтото не так делаю?
Конечно. Делай так:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
перевод странички...
перевод выделения
Антон давно сделал удобную кнопку, совмещающую эти две
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%0D%0A%20%20%3Cname%3E%u041F%u0435%u0440%u0435%u0432%u043E%u0434%u0447%u0438%u043A%20Google%3C/name%3E%0D%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADPElEQVR4nGWTTWhjZRSG3/uTNr39mTqTn1KacagTqyKIlYJ2ExQCUhiprgpduRVFpLvZjOCsXEgWFqRk0RZcWLopmOnCQcPUsVBiTEZbalrGTJOZJm2aNGm++92b737fcdGZTfvAuznwnMV7OBouEI/HdSHEyNzcXCwajb7r8/n6T09P99bW1u4PDw8/SiQSbHd396IGBINBJJPJQDqdvssYK0kpO0SkiIiUUlII0SqVSr8lk8n3JycnjUsLZmdnb5bL5T+klPK5RNzp0BlzyHEFKXU+cxynubKy8tXExIQJABoAzM/PB6amptYikch70DRtv3iMh5kClPQglcKzozMMXhnAh7E3EL0RhCcEX19f/6xSqSxhdHRUT6VS39i2LYUQtJ7epm9/uEdHtSZJKUkpRa0zm75fvE+f3/mRmM3JcRyqVqulmZmZl7G6uhopl8sHtm3TduEpffH1T1Srn9FFavUmnTRaJKUkx3Go0WiojY2N22aj0Yj5fL6wJyVS6R289koYVwd7L3V07aUBAICUEkopSCk1v99/Sw+Hw5NSyi7OXZQrTQwFBy6f6DlKKSil4HkeOp0ODMO4btq23S+EgFQaAAKzO1BKQdd1AICmaSAiEBGUlBBCwHVduK4LzrlpHh4e7nHOVW+vofdbPmxkHuPWB6/D6vFD13UoRfj38TPsP6mBOxJjN64gdNUC5xz1er2l5/P5XxqNBvNEByPBLmS2n+LXzQK4zcH5ebp9GkAeEksPwJgNxhhs20axWMzo7Xb7US6Xyx7Xanh7LIhXRywklh7i9z/30Wy1YNsMfT0mrG4DGoCO64Ixhlqt5uTz+UVjZ2dHDA0NFYPB4Cd9fVb3W2MhnDZb+DldwD+FCk5OWvivVEX27ycY7APevHkNouNSNpu9l8vlvtMAIBQKGfF4/Mvp6em7oVCoxzAMOB0PjAsQEfxdPvi7DBgG4Dgu5fP5vxYWFj4uFAoHBgAwxmhvby8jpTywLOsdy7IGfKah9XSb56IOeJ7A0dGxs7m5mVpeXv60Xq8fcM7Pf+EFsVhMq1Qq18fHx2ej0ehHgUAgYpqm2W63W6VSKVMsFhe3trYeVKtV/sL5HwhICaDODiyAAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0D%0A%20%20%3Cmode%3E0%3C/mode%3E%0D%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28%21window.%20cbTranslateButton2%29%0A%7B%0A%09getBrowser%20%28%29.%20addEventListener%0A%09%28%0A%09%09%22mouseup%22%2C%0A%09%09function%20%28event%29%0A%09%09%7B%0A%09%09%09if%20%28event.%20button%20%21%3D%200%29%0A%09%09%09%09return%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2X%20%3D%20event.%20clientX%3B%0A%09%09%09getBrowser%20%28%29.%20contentDocument.%20defaultView.%20cbTranslateButton2Y%20%3D%20event.%20clientY%3B%0A%09%09%7D%2C%0A%09%09false%0A%09%29%3B%0A%09window.%20cbTranslateButton2%20%3D%20true%3B%0A%7D%5D%5D%3E%3C/initcode%3E%0D%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*%09original%20script%20is%20operajs%20Google-Translate%20v%201.6.12%0A%09opera%20ujs%20is%20http%3A//lexi.ucoz.ru/google-translate.js%0A%09original%20author%3A%20Lex1%0A%09modified%20by%20Anton%0A*/%0A%0Aconst%20UJS_TOOLBAR_ID%20%3D%20%22ujs_toolbar%22%3B%0Aconst%20UJS_GOOGLE_TRANSLATE_FRAME_ID%20%3D%20%22ujs_googletranslateframe%22%3B%0A%0Afunction%20cbTranslatorButton%20%28browser%29%0A%7B%0A%09this.%20doc%20%3D%20browser.%20contentDocument%3B%0A%09this.%20win%20%3D%20browser.%20contentDocument.%20defaultView%3B%0A%7D%0AcbTranslatorButton.%20prototype%20%3D%0A%7B%0A%09doc%3A%20null%2C%0A%09win%3A%20null%2C%0A%09toolbar%3A%20null%2C%0A%09clse%3A%20null%2C%0A%09frame%3A%20null%2C%0A%09%0A%09grabX%3A%200%2C%0A%09origX%3A%200%2C%0A%09grabY%3A%200%2C%0A%09origY%3A%200%2C%0A%09%0A%09handleEvent%3A%20function%20%28event%29%0A%09%7B%0A%09%09switch%20%28event.%20type%29%0A%09%09%7B%0A%09%09%09case%20%22mousedown%22%3A%0A%09%09%09%09this.%20tbOnMouseDown%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mousemove%22%3A%0A%09%09%09%09this.%20tbOnMouseMove%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22mouseup%22%3A%0A%09%09%09%09this.%20tbOnMouseUp%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22click%22%3A%0A%09%09%09%09this.%20clseOnClick%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09case%20%22load%22%3A%0A%09%09%09%09this.%20frameOnLoad%20%28event%29%3B%0A%09%09%09%09break%3B%0A%09%09%09default%3A%3B%0A%09%09%7D%0A%09%7D%2C%0A%09%0A%09tbOnMouseMove%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20toolbar.%20style.%20left%20%3D%20this.%20origX%20+%20event.%20clientX%20-%20this.%20grabX%20+%20%27px%27%3B%0A%09%09this.%20toolbar.%20style.%20top%20%3D%20this.%20origY%20+%20event.%20clientY%20-%20this.%20grabY%20+%20%27px%27%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseUp%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20doc.%20removeEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209997%3B%0A%09%7D%2C%0A%09%0A%09tbOnMouseDown%3A%20function%20%28event%29%0A%09%7B%0A%09%09if%20%28event.%20target%20%3D%3D%20this.%20toolbar%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20event.%20preventDefault%20%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20toolbar.%20style.%20zIndex%20%3D%209998%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabX%20%3D%20event.%20clientX%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20grabY%20%3D%20event.%20clientY%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origX%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20left%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20origY%20%3D%20parseInt%20%28this.%20toolbar.%20style.%20top%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mousemove%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.%20doc.%20addEventListener%20%28%27mouseup%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%7D%2C%0A%09%0A%09removeEventListener%3A%20function%20%28element%2C%20eventType%2C%20captureFlag%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20removeEventListener%20%28eventType%2C%20this%2C%20captureFlag%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09removeElement%3A%20function%20%28element%29%0A%09%7B%0A%09%09try%0A%09%09%7B%0A%09%09%09element.%20parentNode.%20removeChild%20%28element%29%3B%0A%09%09%7D%0A%09%09catch%20%28err%29%20%7B%7D%0A%09%7D%2C%0A%09%0A%09clseOnClick%3A%20function%20%28event%29%0A%09%7B%0A%09%09this.%20clse.%20removeEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20toolbar%2C%20%27mousedown%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mousemove%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20doc%2C%20%27mouseup%27%2C%20false%29%3B%0A%09%09this.%20removeEventListener%20%28this.%20frame%2C%20%27load%27%2C%20false%29%3B%0A%09%09this.%20removeElement%20%28this.%20toolbar%29%3B%0A%09%09this.%20removeElement%20%28this.%20frame%29%3B%0A%09%09this.%20frame%20%3D%20null%3B%0A%09%09this.%20clse%20%3D%20null%3B%0A%09%09this.%20toolbar%20%3D%20null%3B%0A%09%09this.%20win%20%3D%20null%3B%0A%09%09this.%20doc%20%3D%20null%3B%0A%09%7D%2C%0A%09%0A%09ujs_createWindow%3A%20function%20%28txt%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20h%2C%20w%3B%0A%09%20%20%20%20var%20txtLen%20%3D%20txt.%20length%3B%0A%09%20%20%20%20var%20tbId%20%3D%20UJS_TOOLBAR_ID%3B%0A%09%20%20%20%20if%20%28arguments.%20length%20%3E%202%29%0A%09%20%20%20%20%20%20%20%20tbId%20+%3D%20arguments%20%5B2%5D%3B%0A%09%09var%20toolbar%20%3D%20doc.%20getElementById%20%28tbId%29%3B%0A%09%20%20%20%20if%20%28toolbar%29%0A%09%20%20%20%20%20%20%20%20toolbar.%20parentNode.%20removeChild%20%28toolbar%29%3B%0A%09%20%20%20%20toolbar%20%3D%20doc.%20createElement%20%28%27div%27%29%3B%0A%09%20%20%20%20this.%20toolbar%20%3D%20toolbar%3B%0A%09%20%20%20%20toolbar.%20id%20%3D%20tbId%3B%0A%09%09if%20%28arguments.%20length%20%3D%3D%205%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20arguments%20%5B3%5D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20arguments%20%5B4%5D%0A%09%20%20%20%20%7D%0A%09%20%20%20%20else%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20h%20%3D%2015%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%2020%3B%0A%09%20%20%20%20%20%20%20%20if%20%28txtLen%20%3E%202000%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2050%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2066%0A%09%20%20%20%20%20%20%20%20%7D%0A%09%20%20%20%20%20%20%20%20else%20if%20%28txtLen%20%3E%20250%29%0A%09%20%20%20%20%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20h%20%3D%2025%3B%0A%09%20%20%20%20%20%20%20%20%20%20%20%20w%20%3D%2033%0A%09%20%20%20%20%20%20%20%20%7D%3B%0A%09%20%20%20%20%20%20%20%20h%20%3D%20parseInt%20%28h%20*%20win.%20innerHeight%20/%2030%29%3B%0A%09%20%20%20%20%20%20%20%20w%20%3D%20parseInt%20%28w%20*%20win.%20innerWidth%20/%2050%29%0A%09%20%20%20%20%7D%3B%0A%09%09var%20title%20%3D%20%28arguments.%20length%20%3E%201%29%20%3Farguments%20%5B1%5D%3A%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%3B%0A%09%09toolbar.%20innerHTML%20%3D%20%27%3Cimg%20src%3D%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC%22%20title%3D%22Close%22%20width%3D%2218%22%20height%3D%2218%22%3E%26nbsp%3B%27%20+%20title%20+%20%27%3Cdiv%3E%3C/div%3E%27%3B%0A%09%09toolbar.%20setAttribute%28%27style%27%2C%20%27position%3Afixed%3Bbackground%3Awhite%3Bdisplay%3Ablock%3Bvisibility%3Ahidden%3Bleft%3A0%3Btop%3A0%3Bheight%3Aauto%3Bwidth%3A%27%20+%20w%20+%20%27px%3Bfont%3A16px%20Times%20New%20Roman%3Bborder%3A1px%20solid%20gray%3Bpadding%3A3px%3Bz-index%3A9997%3Boverflow%3Avisible%3Bcursor%3Amove%3B%27%29%3B%0A%09%09toolbar.%20addEventListener%20%28%27mousedown%27%2C%20this%2C%20false%29%3B%0A%09%09var%20clse%20%3D%20toolbar.%20firstChild%3B%0A%09%09this.%20clse%20%3D%20clse%3B%0A%09%20%20%20%20clse.%20setAttribute%20%28%27style%27%2C%20%27float%3Aright%3Bbackground%3Awhite%3Bpadding%3A0%3Bmargin%3A0%3Bborder%3Anone%3Bcursor%3Apointer%3B%27%29%3B%0A%09%09clse.%20addEventListener%20%28%27click%27%2C%20this%2C%20false%29%3B%0A%09%09var%20textbar%20%3D%20toolbar.%20lastChild%3B%0A%09%20%20%20%20textbar.%20innerHTML%20%3D%20txt%3B%0A%09%09textbar.%20setAttribute%20%28%27style%27%2C%20%27display%3Ablock%3Bborder%3A1px%20solid%20%23aaaaaa%3Bmargin%3A2px%200%200%200%3Bpadding%3A4px%3Bbackground-color%3A%23fafcfe%3Bfont%3A14px%20Times%20New%20Roman%3Bheight%3A%27%20+%20h%20+%20%27px%3Bwidth%3Aauto%3Boverflow%3Aauto%3Bcursor%3Atext%3B%27%29%3B%0A%09%09doc.%20documentElement.%20appendChild%20%28toolbar%29%3B%0A%09%09var%20halfWidth%20%3D%20parseInt%20%28toolbar.%20offsetWidth%20/%202%29%3B%0A%09%09var%20strict%20%3D%20doc.%20compatMode%20%3D%3D%20%27CSS1Compat%27%3B%0A%09%09var%20mX%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientWidth%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientWidth%29%20-%20toolbar.%20offsetWidth%3B%0A%09%09var%20mY%20%3D%20%28strict%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20documentElement.%20clientHeight%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20doc.%20body.%20clientHeight%29%20-%20toolbar.%20offsetHeight%3B%0A%09%20%20%20%20var%20lastClickX%20%3D%20win.%20cbTranslateButton2X%3B%0A%09%20%20%20%20var%20lastClickY%20%3D%20win.%20cbTranslateButton2Y%3B%0A%09%09toolbar.%20style.%20left%20%3D%20%28%28lastClickX%20%3C%20mX%20+%20halfWidth%29%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20%3E%20halfWidth%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28lastClickX%20-%20halfWidth%29%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200%29%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mX%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20top%20%3D%20%28%28lastClickY%20%3C%20mY%29%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lastClickY%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mY%29%20+%20%22px%22%3B%0A%09%09toolbar.%20style.%20visibility%20%3D%20%27visible%27%3B%0A%09%20%20%20%20return%20textbar%3B%0A%09%7D%2C%0A%09%0A%09frameOnLoad%3A%20function%20%28event%29%0A%09%7B%0A%09%09var%20fr%20%3D%20event.%20currentTarget%3B%0A%09%09fr.%20removeEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%09var%20tbId%20%3D%20fr.%20id.%20substring%20%28UJS_GOOGLE_TRANSLATE_FRAME_ID.%20length%29%3B%0A%09%09var%20toolbar%20%3D%20this.%20doc.%20getElementById%20%28UJS_TOOLBAR_ID%20+%20tbId%29%3B%0A%09%09var%20frdoc%20%3D%20fr.%20contentDocument%3B%0A%09%09var%20a%20%3D%20frdoc.%20getElementById%20%28%27autotrans%27%29%3B%0A%09%09var%20title%20%3D%20%28a%20%26%26%20%21/%23808080/.%20test%20%28a.%20innerHTML%29%29%3F%0A%09%09%09%09%09%09%27%26nbsp%3B-%26nbsp%3B%27%20+%20a.%20textContent.%20replace%20%28/%5E.+%3A%20%7C%20%5B%28%5CxBB%5D.+%24/g%2C%20%27%27%29%3A%0A%09%09%09%09%09%09%27%27%3B%0A%09%09var%20result%20%3D%20frdoc.%20getElementById%20%28%27result_box%27%29.%20innerHTML%3B%0A%09%09var%20ancor%20%3D%20toolbar.%20getElementsByTagName%20%28%22a%22%29%20%5B0%5D%3B%0A%09%09ancor.%20innerHTML%20+%3D%20title%3B%0A%09%09ancor.%20nextSibling.%20innerHTML%20%3D%20result%3B%0A%09%09setTimeout%0A%09%09%28%0A%09%09%09function%20%28%29%0A%09%09%09%7B%0A%09%09%09%09fr.%20parentNode.%20removeChild%20%28fr%29%3B%0A%09%09%09%7D%2C%0A%09%09%090%0A%09%09%29%3B%0A%09%7D%2C%0A%09%0A%09google_translate%3A%20function%20%28language%29%0A%09%7B%0A%09%09var%20doc%20%3D%20this.%20doc%3B%0A%09%09var%20win%20%3D%20this.%20win%3B%0A%09%09var%20t%20%3D%20document.%20commandDispatcher.%20focusedWindow.%20getSelection%20%28%29.%20toString%20%28%29%3B%0A%09%09var%20lng%20%3D%20%28win.%20navigator.%20language%20%3D%3D%20%27ru%27%29%3F%20%27ru%27%3A%20%27en%27%3B%0A%09%20%20%20%20if%20%28t%20%26%26%20location.%20hostname%20%21%3D%20%27translate.google.com%27%29%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%20%20%20%20this.%20ujs_createWindow%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%28lng%20%3D%3D%20%27ru%27%3F%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu041F%5Cu0435%5Cu0440%5Cu0435%5Cu0432%5Cu043E%5Cu0434%5Cu0438%5Cu043C%27%3A%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Translating%27%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%5Cu2026%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%3Ca%20href%3D%22http%3A//translate.google.com/%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3Anone%3Bcolor%3A%23000099%3Bfont%3A16px%20Times%20New%20Roman%3B%22%3EGoogle%20Translate%3C/a%3E%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20btoa%20%28escape%20%28t%29%29%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09var%20gtfId%20%3D%20UJS_GOOGLE_TRANSLATE_FRAME_ID%3B%0A%09%09%09var%20fr%20%3D%20doc.%20getElementById%20%28gtfId%29%3B%0A%09%20%20%20%20%20%20%20%20if%20%28%21fr%29%0A%09%20%20%20%20%20%20%20%20%20%20%20%20fr%20%3D%20doc.%20createElement%20%28%27iframe%27%29%3B%0A%09%20%20%20%20%20%20%20%20this.%20frame%20%3D%20fr%3B%0A%09%09%09fr.%20setAttribute%20%28%27id%27%2C%20gtfId%20+%20btoa%20%28escape%20%28t%29%29%29%3B%0A%09%20%20%20%20%20%20%20%20fr.%20setAttribute%20%28%27frameborder%27%2C%20%270%27%29%3B%0A%09%09%09fr.%20setAttribute%20%28%27style%27%2C%20%27width%3A0px%3Bheight%3A0px%3Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bleft%3A-999em%3B%27%29%3B%0A%09%09%09fr.%20setAttribute%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27src%27%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate_t%3Ftext%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20encodeURIComponent%20%28t%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%26ujs%3Dgtt%27%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%09fr.%20addEventListener%20%28%27load%27%2C%20this%2C%20false%29%3B%0A%09%20%20%20%20%20%20%20%20doc.%20documentElement.%20appendChild%20%28fr%29%3B%0A%09%20%20%20%20%7D%0A%09%20%20%20%20else%0A%09%20%20%20%20%7B%0A%09%20%20%20%20%09getBrowser%20%28%29.%20addTab%0A%09%20%20%20%20%20%20%20%20%28%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27http%3A//translate.google.com/translate%3Fu%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20escape%20%28doc.%20location.%20href%29%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26hl%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20lng%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26langpair%3D%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20language%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%27%26tbb%3D1%27%20+%0A%09%20%20%20%20%20%20%20%20%20%20%20%20%28doc.%20charset%3F%20%27%26ie%3D%27%20+%20doc.%20charset%3A%20%27%27%29%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20null%2C%0A%09%20%20%20%20%20%20%20%20%20%20%20%20null%0A%09%20%20%20%20%20%20%20%20%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0A%0Avar%20ct%20%3D%20getBrowser%20%28%29.%20selectedTab%3B%0Aif%20%28%21ct.%20cbTranslateButton5%29%0A%09ct.%20cbTranslateButton5%20%3D%20%5B%5D%3B%0Avar%20translator%20%3D%20new%20cbTranslatorButton%20%28getBrowser%20%28%29%29%3B%0Act.%20cbTranslateButton5.%20push%20%28translator%29%3B%0Atranslator.%20google_translate%20%28%22auto%7Cru%22%29%3B%5D%5D%3E%3C/code%3E%0D%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0D%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0D%0A%20%20%3Cattributes/%3E%0D%0A%3C/custombutton%3E
Отсутствует
okkamas_knife
можно ли в качестве иконки использовать несколько изображений одновременно
Уверен, что можно, но думаю, что это непросто.
Там, скорее всего, надо надо разбираться со стилями которые назначаются анонимному контенту стандартными биндингами.
Разбираться лень, да и уверенности нет в том, что разберусь, а this. appendChild (img) не работает.
Если рядом с кнопкой картинку поставить - то это просто:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
okkamas_knife
где там ошибка?
insertBefore не вставляет строки.
Вот так:
var img = document. createElement ("image"); img. setAttribute ("src", "data://..."); this. parentNode. insertBefore (img, this. nextSibling);
будет работать.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
а можно ли как-то сделать кнопку аналогичную существующей от расширения, точнее ImgLikeOpera, только с парой изменений?
нужно чтобы было только два циклически переключающихся режима (загружать все/ загружать только из кеша), и чтобы кнопка присутствовала в окнах, открытых яваскриптом.
Отредактировано Chelodoi Molovek (09-11-2009 17:29:00)
Отсутствует
В общем, почитал я этот топик, но не нашёл ответа на пару самых простых вопросов (может, читал недостаточно внимательно). Пожалуйста, объясните новичку:
1) сабж предназначен только для FF или для Thunderbird тоже?
2) если сабж работает с TB, то где можно посмотреть коллекции готовых кнопок?
3) в чём отличие от расширения с очень похожим названием Custom Buttons 2 ?
Заранее спасибо!
Отсутствует
okkamas_knife
можешь его переделать
Попробуй
var THIS = this; this. type = "checkbox"; var redirectcleanerOverlay = { init: function() { var appcontent = document.getElementById("appcontent"); appcontent.addEventListener("DOMContentLoaded", redirectcleanerOverlay.load, true); }, load: function(event) { var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.redirectcleaner."); if(!THIS. checked) { return; } /* Clean Links */ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.redirectcleaner."); var doc = event.originalTarget; var links = doc.getElementsByTagName("a"); for(var i=0; i < links.length; i++) { var clean = redirectcleanerOverlay.clean(links[i].href); if(links[i].href != clean) { links[i].setAttribute("redirectcleaner", links[i].href); links[i].href = clean; } } }, clean: function(url) { /* javascript */ if(url.match(/^(?:javascript)/i)) { if(url.match(/[']((?:http|https|ftp)(?::)[^']+)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: javascript" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.clean(RegExp.$1); } if(url.match(/["]((?:http|https|ftp)(?::)[^"]+)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: javascript" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.clean(RegExp.$1); } } /* http|https|ftp */ if(url.match(/^(?:http|https|ftp)/i)) { if(url.match(/.((?:http|https|ftp)(?::)[^?]+[?][^%]+$)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: http|https|ftp" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.unescape(RegExp.$1); } if(url.match(/.((?:http|https|ftp)(?::|%3A|%253A)[^&]+)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: http|https|ftp" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.unescape(RegExp.$1); } if(url.match(/[?&=*:](www[^?]+[?][^%]+$)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: www" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.unescape("http://" + RegExp.$1); } if(url.match(/[?&=*:](www[^&]+)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: www" + "\n" + url + "\n" + RegExp.$1); return redirectcleanerOverlay.unescape("http://" + RegExp.$1); } } return url; }, unescape: function(url) { if(url.match(/^(?:http|https|ftp)(?:%3A)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: unescape" + "\n" + url); return redirectcleanerOverlay.clean(decodeURIComponent(url)); } if(url.match(/^(?:http|https|ftp)(?:%253A)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: unescape" + "\n" + url); return redirectcleanerOverlay.clean(decodeURIComponent(decodeURIComponent(url))); } if(url.match(/(?:%)/i)) { //redirectcleanerOverlay.dump("Redirect Cleaner: unescape" + "\n" + url); return redirectcleanerOverlay.clean(decodeURIComponent(url)); } return redirectcleanerOverlay.clean(url); } }; redirectcleanerOverlay.init ();
Chelodoi Molovek
а можно ли как-то сделать кнопку аналогичную существующей от расширения, точнее ImgLikeOpera, только с парой изменений?
Можно, но вряд ли кто возьмется.
Если с установленным ILO, тогда, наверное, так:
switch (this. iloPolicy) { case 1: this. iloPolicy = 3; break; case 3: this. iloPolicy = 1; break; default: this. iloPolicy = 1; break; } ILO. indicatorClick (this. iloPolicy);
чтобы кнопка присутствовала в окнах, открытых яваскриптом.
Спасибо за замечание.
Это из-за класса chromeclass-toolbar-additional
Если в разделе "Инициализация" будет строка
кнопка будет отображаться в таких окнах.
Leopoldus
1. И для TB тоже
3. В разных мелочах.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Leopoldus
А что надо ?
Если я смогу сделать кнопку для Thunderbird, я сделаю.
Если нет, то, скорее всего, никто не сделает : )
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
класс! работает.
а можешь подсказать еще как сделать, чтобы иконки было две (менялась на разных режимах) и открытие настроек ILO по нажатию средней кнопкой мыши?
Отредактировано Chelodoi Molovek (10-11-2009 22:36:33)
Отсутствует
Anton
А что надо ?
Э-э, если бы я знал, давно объяснил бы. Я просто хотел для начала посмотреть, какие кнопки существуют и не могут ли они облегчить мне жизнь.
Впрочем, одно конкретное пожелание имеется. Хочу кнопку, чтобы она переключала кодировку и атрибуты шрифта в окне message composer. Такое можно сделать?\
А ещё есть мечта переключать формат текущего окна komposer между plain text и HTML (как в MS Outlook), но это, наверное, никакой кнопкой не сделаешь.
Отсутствует
Leopoldus
несколько страниц назад я спрашивал ссылки на готовые кнопки, вот http://forum.mozilla-russia.org/viewtop … 60#p385660
еще в этой теме кое-что можно найти интересное. только на стоит забывать фразу "не плоди сущности без надобности".
а что такое окно message composer? в ФФ ведь нет встроенного почтовика.
Отредактировано Chelodoi Molovek (10-11-2009 22:42:21)
Отсутствует
Chelodoi Molovek
как сделать, чтобы иконки было две (менялась на разных режимах) и открытие настроек ILO по нажатию средней кнопкой мыши?
var img3 = "file:///c:/image3.png"; var img1 = "file:///c:/image1.png"; switch (this. iloPolicy) { case 1: this. iloPolicy = 3; this. image = img3; break; case 3: this. iloPolicy = 1; this. image = img1; break; default: break; } ILO. indicatorClick (this. iloPolicy);
var img1 = "file:///m:/redicon.png"; this. image = img1; this. iloPolicy = 1; ILO. indicatorClick (this. iloPolicy); this. onclick = function (event) { if (event. button == 1) ILO. openSettingsWindow (); }
Leopoldus
чтобы она переключала кодировку и атрибуты шрифта в окне message composer. Такое можно сделать?\
Как это должно выглядеть ?
переключать формат текущего окна komposer между plain text и HTML
Так:
if (!this. formatOption) this. formatOption = "format_plain"; var target = document. getElementById (this. formatOption); OutputFormatMenuSelect (target); target. setAttribute ("checked", "true"); switch (this. formatOption) { case "format_plain": this. formatOption = "format_html"; break; case "format_html": this. formatOption = "format_plain"; break; default:; }
?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Leopoldus
чтобы она переключала кодировку и атрибуты шрифта в окне message composer. Такое можно сделать?
Как это должно выглядеть ?
Ну, на общем уровне идея такая: несколько кнопок с забитыми в них вариантами настроек шрифта (и кодировки) из меню Tools -> Options -> Display -> Formating -> Fonts & Encodings -> Fonts.. Скажем, нажал красную кнопочку на панели - и текущий пропорциональный дефолтный шрифт для кодировки Cyrillic стал Sans-Serif; Arial; 8 px. Нажал зелёную кнопочку - и стало: Serif; Book Antigua; 20 px.
Не знаю, осуществимо ли это.
Отредактировано Leopoldus (11-11-2009 21:51:01)
Отсутствует
Leopoldus
Ну, на общем уровне идея такая: несколько кнопок с забитыми в них вариантами настроек шрифта (и кодировки) из меню Tools -> Options -> Display -> Formating -> Fonts & Encodings -> Fonts.. Скажем, нажал красную кнопочку на панели - и текущий пропорциональный дефолтный шрифт для кодировки Cyrillic стал Sans-Serif; Arial; 8 px. Нажал зелёную кнопочку - и стало: Serif; Book Antigua; 20 px.
Наверное, так (для Cyrillic):
Красная:
custombuttonsUtils. setPrefs ("font.default.x-cyrillic", "sans-serif"); custombuttonsUtils. setPrefs ("font.name.serif.x-cyrillic", "Arial"); custombuttonsUtils. setPrefs ("font.size.variable.x-cyrillic", 8);
Зеленая:
custombuttonsUtils. setPrefs ("font.default.x-cyrillic", "serif"); custombuttonsUtils. setPrefs ("font.name.serif.x-cyrillic", "Book Antigua"); custombuttonsUtils. setPrefs ("font.size.variable.x-cyrillic", 20);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
спасибо. а здесь что должно лежать? var img1 = "file:///m:/redicon.png";
Отсутствует
Хочу кнопку, чтобы она переключала кодировку и атрибуты шрифта в окне message composer
Точно! Я тоже когда-то хотел такое, но сделать не смог. И это полезно не только в просмотре и составлении сообщения, но и в основном окне.
Суть. Есть меню Вид->Кодировка->... Далеко и неудобно лазить, чтоб привести кракозябровое письмо к читаемому виду. Особенно если учесть, что дальше ещё подменю: "Кириллица" (или "Восточноевропейская"). Хотелось бы вытянуть это подменю в подменю кнопки.
Я для себя частично решил этот вопрос, вытянув подменю "Кодировка" с помощью MenuManipulator в основную строку. Но всё равно не идеал...
Отсутствует
Не получается создать работающий код.
Нужно найти в меню useragentswitcher активный (выбранный) в данный момент ЮзерАгент и выбрать следующий за ним.
Вот в скриншотах все атрибуты:
активный ЮА http://s50.radikal.ru/i130/0911/62/4ae01c39f462.gif
неактивный ЮА http://s57.radikal.ru/i157/0911/c4/4b85c7968398.gif
Поможите кто может.
PS. Пока что выбираю практически вручную:
var y = document. getElementsByAttribute("id", "useragentswitcher-user-agent-73-menu");
y.item(0).click();
И так 73 раза
Отсутствует