Есть у меня кнопка, которая по ЛКМ открывает текстовый редактор, установленный в системе Akelpad. По СКМ эмулирует редактор в браузере, по ПКМ CB меню. Можно сделать тоже самое для ucf, тоько для ПКМ сделать эмуляцию, как СКМ с вставкой из буфера? Может, такое уже кто и просил, ткните носом.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0439%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.onclick%20%3De%3D%3E%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%3D%201%20%29%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28notepad%2C%20%7B%0A%20%20%20%20triggeringPrincipal%3A%20Services.scriptSecurityManager.getSystemPrincipal%28%29%0A%20%20%20%20%7D%29%3B%20//%20%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%20%20%20%0A%7D%3B%0A%0A//%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%u0432%20%u0442%u0435%u043A%u0443%u0449%u0435%u0439%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Aif%20%28%20gBrowser.currentURI.spec%20%3D%3D%20notepad%20%29%20%7B%0A%20%20%20%20%20var%20val%20%3D%20content.document.getElementsByTagName%28%22textarea%22%29%5B0%5D.value%3B%0A%20%20%20%20%20loadURI%28notepad%29%3B%0A%20%20%20%20%20setTimeout%28%28%29%3D%3E%20content.document.getElementsByTagName%28%22textarea%22%29%5B0%5D.value%20%3D%20val%2C%20500%29%3B%20%20%20%20%20%0A%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%0A//%20%u041E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u0430%u0434%u0440%u0435%u0441%u043D%u0443%u044E%20%u0441%u0442%u0440%u043E%u043A%u0443%20%u0432%20%u043A%u043B%u0430%u0434%u043A%u0435%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20...........%0AaddEventListener%28%22TabAttrModified%22%2C%20%28%29%3D%3E%20gBrowser.currentURI.spec%20%3D%3D%20notepad%20%26%26%20gURLBar.reset%28%29%29%3B%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0430%u0435%u043C%20%u0430%u0434%u0440%u0435%u0441%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20%u043A%u0430%u043A%20base64%20%u0438%u0437%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u043F%u0440%u0430%u0432%u043A%u0430%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u0434%u043B%u044F%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0430%20...........%0Avar%20notepad%20%3D%20%22data%3Atext/html%3Bbase64%2C%22%20+%20window.btoa%28self.getAttribute%28%27Help%27%29.replace%28%27selfImage%27%2C%20self.image%29%29%3B%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20...........%0Athis.tooltipText%20%3D%20%22%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0439%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20%5Cn%u041B%u041A%u041C%3A%20Akelpad%20%5Cn%u0421%u041A%u041C%3A%20%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%20%5Cn%u041F%u041A%u041C%3A%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20file%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Ci.nsIFile%29%3B%0Afile.initWithPath%28%20%22c%3A%5C%5CProgram%20Files%5C%5CAkelPad%5C%5CAkelPad.exe%22%20%29%3B%0Afile.launch%28%29%3B%0A%0A%0A//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0Avar%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0AalertsService.showAlertNotification%28self.image%2C%20%22Akelpad%22%2C%20%22%u0417%u0430%u043F%u0443%u0441%u043A%u0430%u0435%u043C%20Akelpad%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0AsetTimeout%28%28%29%3D%3E%20alertsService.closeAlert%28%29%2C%202000%29%3B%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text/html%3B%20charset%3Dutf-8%22/%3E%3Ctitle%3ENotepad%3C/title%3E%0A%3Chead%3E%0A%20%3Clink%20rel%3D%22shortcut%20icon%22%20href%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22type%3D%22image/x-icon%22%3E%0A%3C/head%3E%0A%0A%3CTEXTAREA%3E%3C/TEXTAREA%3E%0A%3Cstyle%3E%0A%0Ahtml%20%7B%0A%20%20background-color%3A%20black%3B%0A%20%20overflow%3A%20hidden%3B%0A%7D%0Atextarea%20%7B%0A%20%20background%3A%20%23383838%3B%0A%20%20overflow-y%3A%20auto%3B%0A%20%20width%3A%20100%25%3B%0A%20%20height%3A%20100%25%3B%0A%20%20border-radius%3A%202px%3B%0A%20%20border%3A%202px%20inset%20white%3B%0A%20%20color%3A%20white%3B%0A%7D%0A%3C/style%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
https://cs.majento.ru/
Может так
Services.search.addPolicyEngine({ iconURL: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAABM2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///LYKY/wAAAP8AAAD/AAAA/w8rMv8AAAD/AAAA/wAAAP8AAAD/BQ8R/0K93f9M2///TNv//0zb//9M2///Qr3d/wAAAP8AAAD/I2V2/yh0h/8odIf/LYKY/xlIVP8odIf/I2V2/wAAAP8KHCH/TNv//0zb//9M2///TNv//x5XZf8AAAD/KHSH/0zb//9M2///TNv//0zb//9M2///TNv//0K93f8AAAD/AAAA/0zb//9M2///TNv//0zb//8UOUP/AAAA/0zb//9M2///TNv//0zb//9M2///Qr3d/xQ5Q/8AAAD/AAAA/yNldv9M2///TNv//0zb//9M2///FDlD/wAAAP9M2///TNv//0zb//9M2///Qr3d/wAAAP8AAAD/Dysy/zeguv9M2///TNv//0zb//9M2///TNv//yh0h/8AAAD/Hldl/0zb//9M2///TNv//yh0h/8AAAD/I2V2/0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///AAAA/wAAAP8PKzL/FDlD/yNldv83oLr/AAAA/wAAAP8UOUP/AAAA/y2CmP9M2///TNv//0zb//9M2///TNv//0K93f8ZSFT/AAAA/wAAAP8ZSFT/TNv//yh0h/8FDxH/AAAA/wocIf8odIf/TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///TNv//0zb//9M2///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", chrome_settings_overrides: { search_provider: { name: "ClearSearch – поиск в Яндексе без рекламы", search_url: "https://cs.majento.ru/search/", search_url_post_params: "phrase={searchTerms}" } } });
Хочу чтобы кнопка Undo не реагировала на закрытые или открытые окна...
В каком смысле «не реагировала»? Можно попродробнее?
Можно сделать тоже самое для ucf, тоько для ПКМ сделать эмуляцию, как СКМ с вставкой из буфера?
(async (html, self) => CustomizableUI.createWidget(self = { label: "Текстовый редактор", tooltiptext: [ "Текстовый редактор", "ЛКМ: AkelPad", "ПКМ: Открыть блокнот" ].join("\n"), akelpadPath: "C:\\Program Files\\AkelPad\\AkelPad.exe", image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAgAAAAApKSlRRkZGh0BAQHxBQUF+QUFBfkFBQX5BQUF+QEBAfEZGRogaGho1AAAAAAABAAECAgICAgICAgQEBAUAAAAAMTEwWeLi4f//////+vr6//r6+v/6+vr//Pz8//v7+//5+fn++/v7/7CwsPdNTU2hAQEBAgAAAAAAAAAAAwMDBAAAAABvbm+x8vHy/+Df4Pfi4+P76ubr++Lh4vvk5OT7/f39+/////v////77/Dv/aysrP8BEAElKngnxDCDLdEvgSzOLX8qy0GTPu1Zq1b/WatW/lasU/9op2f/xcPF/8PEw//i5+L/8vfx//H27//p6+n/qqqq/ESaQOS67a7/teip/rbpqv+36qv/suSm/6zfoP+s36D/teOo/4bNfP93s3b/39bf/9XY1f/5/Pj/+Pv2/+vs6/+qqar/T6RK8bvjsP6t2qT8sNym/LDcpvyx3af+st6o/7LeqP+w3ab/vuaz/1mqVP+2w7b/3dvd//D07//4+/f/6+zr/6qqqv8BNwFvndiU/8Djt/y34a//ueGw/7nhsP+54bD/ueGw/7jgr//B5Lj/mtSS/3q1ev/WzNb/4ufh//f79f/p6+n/qqqq/wAAAANHk0Pbzu/F/73gtP3A47f/wOO3/8Djt//A47f/wOO4/73itf/D5rn/Y7Je/7/MwP/k4eP/+f35/+vs6/+qqqr/AAAAAAAzAGap4KP/zebG+8Tkvv/G5b//xuS//8blv//F5b7/vuK2/8LkuP+U0Yv/ZaBl/97W3v/u9e3/6+3r/6qqqv8DAQMAAAAABE6XS+Db8dT/yuPD/czmxv/N5sf/zObG/8blv//A47j/t+Cu/7vjsP9nuWP/uMW5/+zr6//s7+z/qamq/wACAAQAAAAAATQBZrTir//a6dX70ufN/9Pozv/N5sf/xuS//8Djt/+44K//u+Ow/4zNgv9uqW7/6+Tr/+ru6v+qqar/AAAAAQMBAwAAAAAHVJhS2Or25v/W59L91OjP/8zmxv/G5b//wOO3/7rhsP+w3ab/tuSp/1isU/+vva//6+rq/6qqqv8AAAAAAQIBAwAAAAAENQRkv+S7/+Pr3vvR58z/zObG/8bkv/+/4rf/ueCw/7Hep/+z4Kf/h818/3Kucv/r4uv/qKqo/gAAAAAAAAABAwEDAAAAAApVl1TU7Pbo/9HlzP3P58j/xuS//8Ljuf+64bH/s9+p/6vcoP+t4KD/Wq5U/8bSx/23tLf9AAAAAAAAAAABAgEDAAAAAAk3CWaq36b/1unR+cLjvPzF5r78t+Cv/LXgrP2w36b8odmW/Kzgn/1yxGf7gLKA/52Sne0AAAAAAAAAAAAAAAECAQIAAAEADUOCQcdwt23/Zati82GrXvVjrWD4XKlY9FqpVvZaqlX3UqZN81OnTvxYbFndGxcbNAAAAAAAAAAAAAAAAAABAQEAAAAAFBAUHTAzMGcqKipRJSclUS8wL14nJyZNKCspVy4uLlsiJCJKNjU2aQQABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", id: "ucf-noteAkelPad", localized: false, onCreated(btn) { btn._handleClick = this.akelpad; btn.oncontextmenu = this.context; btn.setAttribute("image", this.image); }, get akelpad() { delete this.akelpad; return this.akelpad = Components.Constructor( "@mozilla.org/file/local;1", "nsIFile", "initWithPath" )(self.akelpadPath).launch; }, get url() { var u = (code, mime) => `data:${mime};charset=utf-8,${ encodeURIComponent(code) }`; this.fs = u(`addEventListener("pageshow", e => { var ta = e.target.getElementById("ta"); ta.focus(); docShell.doCommand("cmd_paste"); ta.editor.beginningOfDocument(); }, {once: true});`, ""); delete this.url; return this.url = u(html.replace("ICON", self.image), "text/html"); }, context(e) { if (e.ctrlKey || e.shiftKey) return; e.preventDefault(); var gb = this.ownerGlobal.gBrowser; (gb.selectedTab = gb.addTrustedTab(self.url)) .linkedBrowser.messageManager.loadFrameScript(self.fs, false); } }))( // <!DOCTYPE HTML> breaks the style :( `<html> <head> <title>Notepad</title> <link rel="shortcut icon" href="ICON"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <style> html { overflow: hidden; background-color: black; } textarea { width: 100%; height: 100%; color: white; outline: none; padding: 2px 4px; /*resize: none;*/ overflow-y: auto; border-radius: 2px; background: #383838; border: 2px inset white; } </style> </head> <body> <textarea id="ta"></textarea> </body> </html>`);
Отсутствует
Dumby
В каком смысле «не реагировала»? Можно попродробнее?
В смысле, undoclose.window не надо. Только вкладки закрытые, без закр.окон. Иногда окно выскочит(при авторизации,к примеру) ,а кнопка целую простынь показывает в popup
Пункты я убираю, но сама кнопка ярко горит...Короче, как бы не реагировать на undoclose.Window
Отсутствует
Иногда окно выскочит(при авторизации,к примеру) ,а кнопка целую простынь показывает в popup
Пункты я убираю, но сама кнопка ярко горит...
Да, так понятнее, спасибо.
Даже не знаю, вот смотри — горит или не горит,
вроде, должно проходить через метод updUI()
… updUI: function() { var tabsCount = this.closedTabCount; var dis = !tabsCount && !this.closedWindowCount; if( dis && this.options.useMenu && this.options.menuTemplate.indexOf("restoreLastSession") != -1 && "restoreLastSession" in this.ss && this.ss.canRestoreLastSession ) dis = false; this.button.disabled = dis; },
Отсутствует
Если popup окошко открыто с помощью window.open()
Можно каким то образом заставить ссылки в нем открываться в новых вкладках этого же окошка?
Сейчас я кликаю по ссылке и она открывается в текущей вкладке popup'а. А если выбираю в контекстном меню ссылки "Открыть в новой вкладке", то открывается во вкладке основного окна.
Никто не ответит?
Отсутствует
Никто не ответит?
Ну, если вопрос адресован тем, у кого нередко
popup окошко открыто с помощью window.open()
то, скорее всего, нет. Если бы ответ был, то уже запостили бы, наверно.
А если вопрос адресован более широкой аудитории,
то шансов ещё меньше. Ведь тогда, как бы, просматривается предложение
переспрашивать что-то типа: «а что за window?», «а какие аргументы
передаются в его метод open()», иначе говоря — «как этот попап можно увидеть?».
Но выканючивать то, что и так должно быть в вопросе, странно же.
Впрочем, дело такое, «под настроение».
Отсутствует
Garalf
xrun1
(() => { var loadscript = relpath => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, globalThis, "UTF-8"); } catch(e) {} }; loadscript("подпапка/Attributes_Inspector_ucf.js"); loadscript("подпапка/BBCode_Multi_ucf.js"); // и т. д. })();
Отсутствует
momo2000
https://github.com/Infocatcher/Custom_Buttons/blob/master/Attributes_Inspector/attrsInspector.js
добавлено
https://forum.mozilla-russia.org/viewtopic.php?id=56041
Отредактировано bezuma (21-06-2021 08:19:25)
Отсутствует
momo2000
Ежели для ucf, тогда в custom_script.js https://forum.mozilla-russia.org/viewtopic.php?pid=789007#p789007
Путь в файлу attrsInspector.js Infocatcher, ссылку дал выше bezuma, свой пропишите.
Отсутствует
Dumby
В Undo close убрал && !this.closedWindowCount; . Вроде все класс, А, вот когда остается один пункт "восстановить сессию" , жаль кнопка не горит. Как бы рихтануть? Сессия есть - кнопка горит.
Отредактировано ВВП (24-06-2021 10:15:05)
Отсутствует
после выхода-входа один черт не горит...
Похоже, вот прям так сразу,
SessionStore не готово заявить canRestoreLastSession
Попробуй таймаут. Добавить в конец
setTimeout(() => this.undoCloseTabsList.updUI(), 250);
Отсутствует
Помогите создать простую кнопу для ucf
this.onmousedown =e=> { if ( e.button == 0 ) self.timer = setTimeout(()=> { self.onmouseup = ''; Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart) }, 200); this.onmouseup =e=> { if ( e.button ) return; clearTimeout(self.timer); gBrowser. selectedTab = gBrowser. addTrustedTab ("about:about") } if ( e.button == 1 ) gBrowser. selectedTab = gBrowser. addTrustedTab ("about:support") if ( e.button == 2 ) gBrowser. selectedTab = gBrowser. addTrustedTab ("about:config") }
Отредактировано momo2000 (27-06-2021 15:58:51)
Отсутствует
Dumby
Что в этом коде рихтануть , чтобы вместо personalToolbar(теперь он через настройки и уже подставил в код) , Sidebar бы теперь закрытым был всегда?
((id, g) => { addDestructor(r => r[5] == "e" && id in g && g[id].destroy()); if (g[id]) return; var {obs, xulStore, prefs} = Services; var topic = "quit-application", doc = document.documentURI; obs.addObserver(g[id] = { observe(s, t, data) { this.destroy(); if (data != "shutdown") return; xulStore.setValue( doc, "PersonalToolbar", "collapsed", "true" ); for(var pref of [ "browser.zoom.full", "intl.accept_languages", "network.trr.uri", "network.proxy.type", "extensions.long_left_click.timeContent", "browser.toolbars.bookmarks.visibility", ]) prefs.clearUserPref(pref); }, destroy() { delete g[id]; obs.removeObserver(this, topic); } }, topic, false); })( "CBQuitApplicationPersonalToolbarCollapser", Cu.getGlobalForObject(Cu) );
Отредактировано ВВП (27-06-2021 22:03:28)
Отсутствует
momo2000
(async (su, self) => CustomizableUI.createWidget(self = { label: "label", tooltiptext: "tooltiptext", image: "chrome://browser/content/robot.ico", id: "ucf-lprestart-about", localized: false, onCreated(btn) { btn.onmousedown = this.mousedown; btn.setAttribute("image", this.image); }, mousedown(e) { if (e.detail != 1) return; var win = this.ownerGlobal; if (e.button == 2) { if (e.ctrlKey || e.shiftKey) return this.removeAttribute("context"); this.setAttribute("context", ""); return self.about(win, "config"); } if (e.button == 1) return self.about(win, "support"); this.onmouseup = self.mouseup; this.rt = win.setTimeout(self.restart, 200, this); }, mouseup(e) { this.onmouseup = null; this.ownerGlobal.clearTimeout(this.rt); self.about(this.ownerGlobal, "about"); }, restart(btn) { btn.onmouseup = null; su.quit(su.eAttemptQuit | su.eRestart); }, about(win, about) { win.gBrowser.selectedTab = win.gBrowser .addTrustedTab("about:" + about); } }))(Services.startup);
Отсутствует
Ребят, может знает кто, как добавить в кнопку BBCode пункт Нумерованный список?
Вот как выглядит выравнивание по левому краю и по правому.
Left|Выравнивание по левому краю|left|||data:image..... Right|Выравнивание по правому краю|right|||data:image.....
Нумерованный Список|Список|......?
Чтобы вышло примерно так.
1. ТЕКСТ
2. ТЕКСТ
3. ТЕКСТ
Отсутствует