Stakhovsky
Ой, перебор уже, видимо.
и это замените тогда, чтоб визуально отбивать текст
Отсутствует
Stakhovsky
Исправил проблему с форматированным текстом:
addEventListener("dblclick", function(e) { var target = e.originalTarget; if ( e.button !== 0 || !target._placesNode || !PlacesUtils.nodeIsFolder( target._placesNode ) ) return; var hostName = '[hst]' + window.gBrowser.selectedBrowser.contentWindow.location.hostname + '[hst]'; var docTitle = ( content.document.title || gBrowser.mCurrentTab.label).substr(0, 50); var folderId = PlacesUtils.getConcreteItemId( target._placesNode ); var folderTitle = PlacesUtils.bookmarks.getItemTitle( folderId ); var parentFolderTitle = PlacesUtils.bookmarks.getItemTitle( folderId ); var currentURI = Services.io.newURI( content.location, null, null ); var getSel = document.commandDispatcher.focusedWindow.content.document.getSelection().toString(); var selTxt = ''; if (getSel) selTxt = '[txt] :: ' + getSel + ' :: [txt]'; PlacesUtils.bookmarks.insertBookmark( folderId, currentURI, 0, hostName + docTitle + selTxt + '[' + folderTitle + ']'); // всплывающая подсказка .... var favicon = ( !!gBrowser.mCurrentTab.image ) ? gBrowser.mCurrentTab.image : "chrome://global/skin/icons/Portrait.png"; Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) .showAlertNotification( favicon, "Добавил в папку " + folderTitle + ":", docTitle, false, "", null, ""); }); addEventListener('popupshowing', e=> { var popup = e.originalTarget; if (!(popup.localName == 'menupopup' && popup.hasAttribute('placespopup'))) return; Array.slice(popup.querySelectorAll('menuitem.bookmark-item')).forEach(mItem=> { var label = mItem.label; if (!label.startsWith('[hst]')) return; var host = label.split(/\[hst\](.*)\[hst\]/)[1]; mItem.setAttribute('acceltext', host); if (label.indexOf('[txt]') !== -1) { label = encodeURIComponent(label); mItem.label = decodeURIComponent(label.replace(/%5Bhst%5D.*%5Bhst%5D|%5Btxt%5D/g, '')); } else mItem.label = label.split(/\[hst\].*\[hst\]/)[1]; }) }, false, window); addEventListener('popupshowing', e=> { var bhTltp = e.originalTarget; var tipTitle = document.getElementById('bhtTitleText'); var tipTxt = tipTitle.textContent; if (tipTxt.startsWith('[hst]')) { var hLabel = document.createElement('label'); hLabel.id = 'bhtHst'; hLabel.textContent = tipTxt.split(/\[hst\](.*)\[hst\]/)[1]; bhTltp.appendChild(hLabel); if (tipTxt.indexOf('[txt]') !== -1) { tipTxt = encodeURIComponent(tipTxt); var tLabel = document.createElement('label'); tLabel.id = 'bhtTxt'; tLabel.textContent = decodeURIComponent(tipTxt.split(/%5Btxt%5D(.*)%5Btxt%5D/)[1]); bhTltp.appendChild(tLabel); tipTitle.textContent = decodeURIComponent(tipTxt.replace(/%5Bhst%5D.*%5Bhst%5D|%5Btxt%5D.*%5Btxt%5D/g, '')); } else tipTitle.textContent = tipTxt.split(/\[hst\].*\[hst\]/)[1]; bhTltp.addEventListener('popuphiding', function func() { if (hLabel) bhTltp.removeChild(hLabel); if (tLabel) bhTltp.removeChild(tLabel); bhTltp.removeEventListener('popuphiding', func); }) } }, false, document.getElementById('bhTooltip'));
UPD: "Прооптимизировал", насколько смог.
Может сюда заглянет Dumby или bunda1 и наставят, как тут можно было бы удалить листенер на popuphiding, для анонимной функции.
arguments.callee deprecated и вообще, а с чертовым handleEvent никак не разберусь, чтоб this впихнуть.
Отредактировано turbot (21-05-2016 08:01:46)
Отсутствует
У меня к этой кнопке в конце добавлен код gBrowser.removeCurrentTab();
Чтобы после добавления вкладки она закрывалась.
// Двойным левым кликом на папке закладок добавлять закладку в папку закладок, от 15.08.2016. ...................... addEventListener("dblclick", (e, targ = e.originalTarget)=> { if ( e.button || !targ._placesNode || !PlacesUtils.nodeIsFolder(targ._placesNode) ) return; var docTitle = (content.document.title || gBrowser.mCurrentTab.label).substr(0, 50); var folderId = PlacesUtils.getConcreteItemId(targ._placesNode); var folderTitle = PlacesUtils.bookmarks.getItemTitle(folderId); var currentURI = Services.io.newURI(content.location, null, null); PlacesUtils.bookmarks.insertBookmark(folderId, currentURI, 0, docTitle); // всплывающая подсказка .... var favicon = gBrowser.mCurrentTab.image || "chrome://global/skin/icons/Portrait.png"; Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) .showAlertNotification(favicon, "Добавил в папку " + folderTitle + ":", docTitle); document.getElementById("contentAreaContextMenu").hidePopup(); gBrowser.removeCurrentTab(); });
Отсутствует
Отсутствует
bunda1
Ну я им очень редко пользуюсь, если очень надо будет то вызову где нибудь в другом месте
в боковой панели ctrl+b или библиотеке shift+ctrl+b
или оно вообще нигде не будет работать?
Если да тогда можно ли сделать его вызов долгим левым кликом?
Отсутствует
bunda1
Можно вас попросить еще изменить добавление двойным левым кликом на одинарным правым?
// Правым кликом на папке закладок добавлять закладку в папку закладок, от 06.06.2019. ...................... addEventListener("click", (e, targ = e.originalTarget)=> { if ( e.button != 2 || !targ._placesNode || !PlacesUtils.nodeIsFolder(targ._placesNode) ) return; var docTitle = gBrowser.selectedTab.label.substr(0, 50); var folderId = PlacesUtils.getConcreteItemId(targ._placesNode); var folderTitle = PlacesUtils.bookmarks.getItemTitle(folderId); var currentURI = Services.io.newURI(gBrowser.currentURI.spec, null, null); PlacesUtils.bookmarks.insertBookmark(folderId, currentURI, 0, docTitle); // всплывающая подсказка .... var favicon = gBrowser.selectedTab.image || "chrome://global/skin/icons/Portrait.png"; Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService) .showAlertNotification(favicon, "Добавил в папку " + folderTitle + ":", docTitle); setTimeout(()=> { document.getElementById("placesContext").hidePopup() }, 50); });
Добавлено 06-06-2019 08:53:57
bunda1
Ну я им очень редко пользуюсь, если очень надо будет то вызову где нибудь в другом месте
в боковой панели ctrl+b или библиотеке shift+ctrl+b
или оно вообще нигде не будет работать?
Нет, в боковой панели точно работать будет.
Отредактировано bunda1 (06-06-2019 08:53:57)
Отсутствует
В:
замени 0 на -1
Отсутствует