возникла другая проблема, не могу сохранить несколько страниц хотя бы даже с этой ветки, сохраняется первая а дальше тишина.
Исправил ошибки: Сохранить закладку страницы на ....
Кстати Firefox может хранить закладки как html в указанной папке. Это через about:config можно настроить.
Отредактировано bunda1 (18-11-2012 21:10:50)
Отсутствует
Исправил ошибки: Сохранить закладку страницы на ....
Вот это именно то чего мне так не хватало все время. Спасибо Вам большое, уж и не думал что получу когда нибудь то что надо, предлагали другие варианты, но мне они не очень подходили.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Кстати Firefox может хранить закладки как html в указанной папке. Это через about:config можно настроить.
Это через экспорт закладок в html одним файлом, или это что-то другое?
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Это что-то другое, Firefox может хранить закладки как html в указанной папке:
about:config
browser.bookmarks.file
Browser.bookmarks.autoExportHTML
Отредактировано bunda1 (18-11-2012 23:43:06)
Отсутствует
Infocatcher
Насчёт кнопки Custom_Buttons/Session_Bookmarks at master · Infocatcher/Custom_Buttons · GitHub - Mozilla Firefox.
Просьбы:
Добавить в контекстное в меню страницы новый пункт который добавлял страницу в меню кнопки, ну там "Читать позже" или как.
Возможность сортировки по "Сортировать по типу, домену и названию" или лучше такую же авто сортировку.
Добавлено 19-11-2012 14:22:10
И как открывать закладки в новых фоновых вкладках по ЛКМ
Отредактировано bunda1 (19-11-2012 14:22:10)
Отсутствует
Добавить в контекстное в меню страницы новый пункт который добавлял страницу в меню кнопки, ну там "Читать позже" или как.
В принципе, не помешает. Я подумаю.
Возможность сортировки по "Сортировать по типу, домену и названию" или лучше такую же авто сортировку.
Лично мне такое совсем не нужно, надо подумать.
И не понятно, что делать при наличии разделителей. Сортировать в только в области, отделенной разделителем?
И как открывать закладки в новых фоновых вкладках по ЛКМ
loadInBackground: true, leftClickCloseMenu: false, // если нужно invertLoadBehavior: true,
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо.
Да с разделителями не понятно, хотя я их не использую в кнопке. Может автоматически удалять при сортировке.
Но есть другая просьба сделать так что бы закладка после открытия из кнопки удалялась.
Отредактировано bunda1 (19-11-2012 15:17:34)
Отсутствует
Но есть другая просьба сделать так что бы закладка после открытия из кнопки удалялась.
Это просто:
Add "deleteAfterOpen" option
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Спасибо за такую быструю работу.
Насчёт сортировки может сделай так что бы при добалении закладки она помещалась рядом с похожими по типу, домену и названию, тогда проблем с разделителями не будет.
Отсутствует
В связи с багофичей фокса с data:uri (и saveURL), убрал в кнопке Save snapshot to html их использование.
Отсутствует
Здравствуйте ! Помогите, плиз !
Проблема такая: на странице мне нужно программно нажать кнопку (на JS или другом языке), однако когда я смотрю данную кнопку через ElementFromPoint, то она опознается как DIV В HTML-е страницы ее тоже нет.
Как такое может быть ? Спасибо
Отсутствует
С переходом на 17 версию в кнопке для записи и вставки текста:
function fileName()
{
let dir = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("ProfD", Components.interfaces.nsIFile);
dir.append("custombuttons");
if (!dir.exists()) {
try{
dir.create(0x01, 0x1ED);
} catch(e){
let msg='Custom Buttons error.]'
+'[ Event: Creating custombuttons directory]'
+'[ '+e;
Components.utils.reportError(msg);
}
}
return dir.path;
}
function writeFile (sFilePath, sFileContent)
{
var suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
suc. charset = "UTF-8";
cbu. writeFile (sFilePath, suc. ConvertFromUnicode (sFileContent));
}
function readFile (sFilePath)
{
var suc = Cc ["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance (Ci. nsIScriptableUnicodeConverter);
suc. charset = "UTF-8";
try {
return suc. ConvertToUnicode (cbu. readFile (sFilePath));
}
catch(e) {
}
return "";
}
//******** Read write ******
let mp;
this.removeNode = function( aNode ){
closeMenus( aNode );
mp.removeChild( aNode );
//reAssignId();
};
function reAssignId(){
let NL=mp.childNodes;
for(let i=0;i<NL.length;i++)
{
mp.removeChild(NL[i].id=i+1);
}
}
function addMenuItem(aNode, aLabel, aContextId, aCommand) {
var mi = aNode.appendChild(document.createElement("menuitem"));
mi.setAttribute("label", aLabel.substr(0,mWid));
//mi.setAttribute("label", aLabel);
mi.setAttribute("value", aLabel);
mi.setAttribute("id",aNode.childNodes.length);
if(aContextId) mi.setAttribute("context", aContextId);
if(aCommand) mi.setAttribute("oncommand", aCommand);
}
function donoth(){}
let contextId = "popup-item-clipping";
let test = document.getElementById(contextId);
if(test) test.parentNode.removeChild(test);
let mainPopup = document.getElementById("mainPopupSet");
let context = mainPopup.appendChild(document.createElement("menupopup"));
context.id = contextId;
//addMenuItem(context, "Удалить элемент?", null,
addMenuItem(context, "Удалить элемент?",null, "document.popupNode.parentNode.parentNode.removeNode(document.popupNode);");
// "closeMenus(document.popupNode); " +
// "removeNode(document.popupNode);");
let filePath=fileName()+"/InFormEnter.txt";
let data=readFile(filePath);
let popupItems=data.split('\n');
mp = document.createElement("menupopup");
addMenuItem(mp, "Сохранить", null,"this.parentNode.parentNode.save()");
mp.setAttribute("oncommand", "this.parentNode.paste(event)");
//mp.setAttribute("oncommand", "paste(event.target.label)");
for(var i = 0; i < popupItems.length; i++) {
popupItems[i].replace(/\\s/g,'');
if(popupItems[i].length>1)
addMenuItem(mp, popupItems[i], contextId);
}
function getData()
{
let NL=mp.childNodes;
let data="";
for(let i=1;i<NL.length;i++)
{
data=data+NL[i].value+"\n";
}
return data;
}
this.execute=function(evt)
{
if(evt.target.value==-1)
addMenuItem(mp,readFromClipboard(),contextId);
}
this.save=function()
{
writeFile(filePath,getData())
}
this.paste=function(e)
{
var open=e.target.value;
if (open != "Save"){
var theBox = document.commandDispatcher.focusedElement;
var startPos = theBox.selectionStart;
var endPos = theBox.selectionEnd;
var selectionLen = endPos - startPos
var oPosition = theBox.scrollTop;
var oHeight = theBox.scrollHeight;
var text=theBox.value.substring(0,startPos);
var nHeight = theBox.scrollHeight - oHeight;
text +=open;
text +=theBox.value.substring(endPos, theBox.value.length);
theBox.value = text;
theBox.selectionStart = endPos + open.length;
theBox.selectionEnd = endPos + open.length - selectionLen;
theBox.scrollTop = oPosition + nHeight;
}
};
this.getSupportedFlavours = function () {
var flavours = new FlavourSet();
flavours.appendFlavour("text/unicode");
return flavours;
}
this.onDragOver = function(e,f,s){}
this.onDrop = function(event,dDat,session){
addMenuItem(mp,dDat.data.split('\n')[0],contextId)
}
this.setAttribute("ondragover","nsDragAndDrop.dragOver(event,this);");
this.setAttribute("ondragdrop","nsDragAndDrop.drop(event,this);");
this.tooltipText = this.label;
this.appendChild(mp);
this.value=-1;
this.type = "menu-button";
this.setAttribute("oncommand", "this.execute(event);");
Отсутствует
Я сейчас проверил content-prefs.sqlite и там полно мусора от кнопок для сохранения. Ну дела!
Как теперь сохранять скриншоты страниц без их появления в content-prefs.sqlite?
Отсутствует
bunda1
Методы явно есть, скажем "Saving a canvas image to a file" из https://developer.mozilla.org/en-US/docs/Code_snippets/Canvas
saveCanvas(canvas, 'c:\\image.png') //var url = canvas.toDataURL("image/png"); // saveImageURL(url, win.document.title + ".png", null, false, false, null, content.document);
Правда сохраняет молча.
Добавлено 20-11-2012 22:15:53
А хотя atob нормально работает и с бинарными данными. Так что:
function saveToFile(fileContent, fileName) { var nsIFilePicker = Components.interfaces.nsIFilePicker; var fp = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker); fp.init(window, '', fp.modeSave); fp.defaultString = fileName; fp.appendFilters(fp.filterAll); if(fp.show() == fp.returnCancel) return; var stream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); stream.init(fp.file, 0x02|0x20|0x08, 0666, 0); stream.write(fileContent, fileContent.length); stream.close(); ... saveToFile(atob(url.slice(url.indexOf(',')+1)), win.document.title + ".png"); // saveImageURL(url, win.document.title + ".png", null, false, false, null, content.document); };
Отредактировано Lex1 (20-11-2012 22:15:53)
Отсутствует
Спасибо, но с:
тоже самое, content-prefs.sqlite запоминает скриншоты.
Попробую:
Добавлено 20-11-2012 23:49:01
Нет с saveCanvas тоже беда.
Отредактировано bunda1 (20-11-2012 23:49:30)
Отсутствует
Andrey_Krropotkin
Исключение вылетает в самом расширении, вот здесь:
/** readFile( fPath ) Author: George Dunham aka: SCClockDr Scope: private Args: fPath - Returns: sRet Called by: 1. Purpose: 1. TODO: 1. changed by Anton 25.02.08 */ readFile: function(fPath) //{{{ { var sRet = null; var file = null; fPath = (fPath.indexOf(':\\') > -1 )? fPath.replace(/\//g,'\\') : fPath; try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { alert("Permission to read file was denied."); } file = Components. classes ["@mozilla.org/file/local;1"]. createInstance (Components. interfaces. nsILocalFile); file.initWithPath( fPath ); var fis = Components. classes ["@mozilla.org/network/file-input-stream;1"]. createInstance (Components. interfaces. nsIFileInputStream); fis.init( file,0x01, 00004, null); var sis = Components. classes ["@mozilla.org/scriptableinputstream;1"]. createInstance (Components. interfaces. nsIScriptableInputStream); sis.init( fis ); sRet = sis.read( sis.available() ); sis. close (); return sRet; }, //}}} End Method readFile( fPath )
Starting in Firefox 17 privileged code can not run in a web page anymore. In Firefox 15 you have to manually change a setting to enable it. You can bring that kind of functionality to an extension.
Лучше конечно было бы обновить расширение, но enablePrivilege используется там только в одном месте, так что в кнопках достаточно не трогать только cbu.readFile
Можно, в принципе, попробовать и в самом расширении, в overlay.js убрать
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { alert("Permission to read file was denied."); }
___________________
Закинул на https://www.mozdev.org/bugs/show_bug.cgi?id=25228
Отредактировано Lex1 (21-11-2012 13:23:29)
Отсутствует
Lex1
Я пробовал на своей кнопке Save с saveCanvas(canvas, 'c:\\image.png') и тоже "Сохранить всю страницу как PNG" на FF16
Удалил content-prefs.sqlite запустил FF16 нажал "Сохранить всю страницу как PNG" и сохранил на скриншот на рабочий стол. Потом открыл content-prefs.sqlite используя SQLiteDatabaseBrowserPortable и там этот скриншот.
Наверно у тебя отключена сохранение истории в настройках.
Отредактировано bunda1 (21-11-2012 11:48:13)
Отсутствует
bunda1
Я пробовал такое на чистом FirefoxPortable. Размер не увеличивается.
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%3EScreenshot%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Afunction%20saveToFile%28fileContent%2C%20fileName%29%20%7B%0A%09var%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%09var%20fp%20%3D%20Components.classes%5B%27@mozilla.org/filepicker%3B1%27%5D.createInstance%28nsIFilePicker%29%3B%0A%09fp.init%28window%2C%20%27%27%2C%20fp.modeSave%29%3B%0A%09fp.defaultString%20%3D%20fileName%3B%0A%09fp.appendFilters%28fp.filterAll%29%3B%0A%09if%28fp.show%28%29%20%3D%3D%20fp.returnCancel%29%20return%3B%0A%09var%20stream%20%3D%20Components.classes%5B%27@mozilla.org/network/file-output-stream%3B1%27%5D.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%09stream.init%28fp.file%2C%200x02%7C0x20%7C0x08%2C%200666%2C%200%29%3B%0A%09stream.write%28fileContent%2C%20fileContent.length%29%3B%0A%09stream.close%28%29%3B%0A%7D%3B%0A%0A//%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u043A%u0430%u043A%20PNG%20.......................................................................................................................%0AWebScreenShot%3D%20%7B%0A%20%20%20%20%20%20%20%20capture%20%3A%20function%28win%2C%20x%2C%20y%2C%20width%2C%20height%2C%20isCopy%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20mainWindow%20%3D%20document.getElementById%28%27main-window%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20scrollbox%20%3D%20document.createElement%28%27scrollbox%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scrollbox.width%20%3D%20%271%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scrollbox.height%20%3D%20%271%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mainWindow.appendChild%28scrollbox%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20canvas%20%3D%20document.createElementNS%28%27http%3A//www.w3.org/1999/xhtml%27%2C%20%27canvas%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.style.display%20%3D%20%27inline%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.width%20%3D%20width%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.height%20%3D%20height%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scrollbox.appendChild%28canvas%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20ctx%20%3D%20canvas.getContext%28%222d%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctx.clearRect%280%2C%200%2C%20width%2C%20height%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctx.save%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctx.scale%281.0%2C%201.0%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctx.drawWindow%28win%2C%20x%2C%20y%2C%20width%2C%20height%2C%20%22rgb%28255%2C255%2C255%29%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ctx.restore%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%20%7B%0A%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%20alertsService.showAlertNotification%28%22chrome%3A//global/skin/icons/error-16.png%22%2C%20_this.label%2C%20%22%u041D%u0435%20%u043C%u043E%u0433%u0443%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%2C%20%u0441%u043B%u0438%u0448%u043A%u043E%u043C%20%u0431%u043E%u043B%u044C%u0448%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%20%0A%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%20mainWindow.removeChild%28scrollbox%29%3B%0A%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%7D%0A%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//saveCanvas%28canvas%2C%20%27c%3A%5C%5Cimage.png%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%20canvas.toDataURL%28%22image/png%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20saveToFile%28atob%28url.slice%28url.indexOf%28%27%2C%27%29+1%29%29%2C%20win.document.title%20+%20%22.png%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mainWindow.removeChild%28scrollbox%29%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20captureAll%20%3A%20function%28%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20content%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20WebScreenShot.capture%28win%2C%200%2C%200%2C%20win.innerWidth%20+%20win.scrollMaxX%2C%20win.innerHeight%20+%20win.scrollMaxY%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%0AWebScreenShot.captureAll%28%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Отсутствует
Lex1 спасибо, удалил эти строчки, помогло.
Отсутствует
bunda1
content-prefs.sqlite должен разростаться? Я довольно давно и часто сохраняю полные скриншоты, но content-prefs.sqlite весит 224кб.
И еще вопрос, в Drag and go Modoki, можно ли сделать чтобы по alt+leftclick по ссылке ничего не делал, а то TU заставляет открывать ссылку, как будто простой клик сделан, независимо от browser.altClickSave
Отредактировано Kamui (21-11-2012 17:51:45)
Отсутствует
content-prefs.sqlite должен разростаться? Я довольно давно и часто сохраняю полные скриншоты, но content-prefs.sqlite весит 224кб.
Это также зависит от настроек браузера и наверно от чего то эщо.
И еще вопрос, в Drag and go Modoki, можно ли сделать чтобы по alt+leftclick по ссылке ничего не делал, а то TU заставляет открывать ссылку, как будто простой клик сделан, независимо от browser.altClickSave
Не понял
Отредактировано bunda1 (21-11-2012 17:54:16)
Отсутствует
Не понял
Ну вот например текстовая ссылка, я хочу выделить слово "текстовая", раньше было сложно выделить текст из ссылки, потом ввели параметр browser.altClickSave, стало возможным с зажатым alt выделять текст внутри ссылки, но TU ломает этот функционал и alt+клик ведет себя как простой клик по ссылке. От TU отказаться не могу, очень уж привык
Отсутствует