Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Bookmarklets | Favelets | Букмарклеты

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Открыть новую тему     Написать ответ в эту тему

TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bookmarklets / Favelets / Букмарклеты / Закладурки
 
Работают в любом* браузере, поддерживающем JavaScript, и, соответственно, в любой* ОС.
* хотя, конечно, всегда возможны исключения, связанные с "заточенностью" кода под что-то конкретное.. =)

В этой теме предлагается собирать и обсуждать эти маленькие "полезняшки" для браузеров.
Особо приветствуется конструктивная критика предлагаемых закладурок и варианты их доработки.
 
Убедительная просьба: публикуя код закладурки, пожалуйста, указывайте ссылку на источник!  


Микро-FAQ:  
Что это такое и зачем оно надо? + там же ссылки на некоторые ресурсы по теме
Как ставить и как применять закладурки?
 
Документация:
Букмарклеты и правила их написания + читаем/помним про ограничения! (пост)
Структурированная информация по языку JavaScript
MSDN: Справочник по языку JavaScript
JavaScript language advanced Tips & Tricks
JavaScript FAQ + там же есть и про букмарклеты
Вопросы и ответы по букмарклетам на StackOverflow.com (En)
 
Сделай сам:
Bookmarklet Combiner - он-лайн конструктор + публикация ваших "творений"
JavaScript Compressor - он-лайн "упаковщик" для сохранения JS в одну строку + кодировка в Base62 (пост)
Script to bookmarklet converter - ещё один он-лайн "упаковщик", попроще (пост)
HTML Compressor - он-лайн "упаковщик" HTML/CSS/JavaScript/PHP (пост)  
Convert bookmarklet to Chrome extension (пост)
 
Ресурсы по теме:
En: bookmarklets.comsquarefree.comphilburns.comoperawiki.infomarklets.comabout.com
Ru: webmascon.comnitro.rularge.rulexi.ucoz.rumichurin.net03www.subookmarklets01
Ru-Board: здесь и здесь
 

// текущий бэкап шапки..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 12:00 15-02-2014 | Исправлено: Maz, 14:14 02-11-2021
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Докладываю обстановку после очередной проверки:
1) С переводами строк по-прежнему --- символы "n", но это пока не главное
2) Ссылки в теге
Код:
<a href="https://somesite/somefile.rar" target="_blank"><font color="blue"><b>Скачать</b></font></a>
все еще не берутся(
Или, я что-то не так понимаю. Если что, прошу сильно не пинать
 
Спасибо тебе большое

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 13:04 08-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
есть пара встречных вопросов:
1. у тебя, часом, не линух, не?
2. в каком браузере/версии пробуем?
3. что-то есть в консоли при запуске букмарклета и/или после нажатия на "сохранить текст"?
 
по остальному:
Цитата:
1) С переводами строк по-прежнему --- символы "n", но это пока не главное
с этим как раз проще, можно попробовать замену не '\n', a на '\r' или на '\n\r' - тогда будет и перевод строки и возврат каретки..
или, возможно, как-то некорректно кодировка утф-8 отрабатывается, браузер ведь отдаёт в утф-8 всю эту колбасу..

Цитата:
2) Ссылки в теге
Код:<a href="https://somesite/somefile.rar" target="_blank"><font color="blue"><b>Скачать</b></font></a>
все еще не берутся
вот это и непонятно - почему.. у меня даже твой пост с "псевдо-ссылкой" получился вот так:
Цитата:
...
2) Ссылки в теге
Код: <a href="https://somesite/somefile.rar все еще не берутся(
Или, я что-то не так понимаю. Если что, прошу сильно не пинать
...
т.е. регулярка отрезания "таргет=... отхреначила по первый настоящий тег во вложенной таблице тега "код".. =))
начало, понятно, фильтром не срезало - это же не тег, а голый текст..
 
по-хорошему, парсить пост в текст надо уже после того, как тег каждой ссылки в нём будет целиком заменён на его атрибут href..
но вот как это слепить в пределах букмарклета - я пока не соображу..
поэтому с хтмлкой всё и проще, там весь код исходный остаётся..

Цитата:
Или, я что-то не так понимаю.
так, вроде, ничего "шаманского тут нету, отсюда и непонятно, где собака порыта.. делаешь ведь как-то так:
перетянул код на закладки, тыкнул по ней, тыкнул по новой кнопке в шапке поста, сохранил файл, открыл..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 17:02 08-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Цитата:
1. у тебя, часом, не линух, не?
Linux, но букмарклеты для Google Chrome 67.0.3396.62 (Official Build) (64-bit) не удалось загрузить --- браузер крашился (вылетал). Пришлось туже самую версию браузера в VMware ставить под Windows 7 64-bit. Там и тестирую
Цитата:
2. в каком браузере/версии пробуем?
Google Chrome 67.0.3396.79 (Official Build) (64-bit)

Цитата:
3. что-то есть в консоли при запуске букмарклета и/или после нажатия на "сохранить текст"?
Консоль пока не смотрел, позже включу

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 19:16 08-06-2018 | Исправлено: TeXpert, 22:12 08-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
возвращаясь к вопросу о "пока не соображу" - сообразил, забирай "свежак" - запостил там же, до кучи..  
вопчем, если строго под твои хотелки - кнопку тыкать придётся с тремя клавишами - альт+ктрл+шифт+клик..))
тогда в итоге не будет форумных "обгрызенных" ссылок и текстовки полных ссылок тоже не будет..
ну и имя файла на выходе минималистично - штамп времени..
я, попутно, отказался от текущего, заменив на глобальные мс - ведь каждый день бывает одно и то же время..)
 
по линуксу - не уверен, но, возможно, проблемка с кривизной замены \n с этим и связана..
тут ничего не подскажу, вариантов замены всего 3 - \n, \r и \f (в комбинациях), хотя непонятно, почему слэш отваливается..
 
по браузеру - фиг знает, я на ХР сижу, выше 49-й версии не ходун, на ней всё норм работает..)
я бы не парился с костылями в виде вм, а взял бы просто стабильную рабочую порташку более ранней версии..
впрочем, если уж браузер букмарклеты не может съест, а не ну ли его нафиг..))
 
про консоль - это так, на всякий случай, я, в общем-то, уверен в отсутствии ошибок, но всяко бывает..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 21:05 08-06-2018 | Исправлено: TheBarmaley, 21:16 08-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Вот теперь самым мне подходящим вариантом оказался Shift + щелчок --- ссылки наконец появились (Alt + щелчок почему-то не пашет). Постараюсь все лишнее вырезать сам. А вот со строками та же песня, нет переноса
 
Спасибо
 
P. S. Вот, соорудил такой вариант:
Код:
javascript:function s(){var d=document.createElement("a"),h=(new DOMParser).parseFromString(document.querySelectorAll(".post")[this.id].innerHTML.split(/<table[^>]+"sing">/)[0].replace(/[ ]*<br>[ ]*/g,'\n')+'',"text/html"),l=h.getElementsByTagName('a'),h,i=0;for(i;i<l.length;i++)l[i].href.match('://')&&(l[i].innerHTML=decodeURI(l[i].href)+'');h=new Blob([''+(new DOMParser).parseFromString(h.documentElement.outerHTML,"text/html").documentElement.textContent.replace(/[ ]+/g,' ').replace(/\s\[\?\]/g,'')],{type:"text/plain"});d.setAttribute("href",URL.createObjectURL(h));d.setAttribute("download",Date.now());d.click();d.remove()}for(var i=0,a=document.querySelectorAll(".post");i<a.length;i++){a[i].parentNode.firstChild.innerHTML="<a id="+i+" class='tpc' href=javascript:>Сохранить текст</a> | "+a[i].parentNode.firstChild.innerHTML;document.getElementById(i).onclick=s}
Можно ли выкинуть покрашенные фрагменты? А пока этот код работает --- дает текст и ссылки, но переносов все еще нет

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 22:39 08-06-2018 | Исправлено: TeXpert, 23:32 08-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
самым мне подходящим вариантом оказался Shift + щелчок --- ссылки наконец появились
так и неясно, почему раньше их не было.. по идее - это же обычный жс-код, должен одинаково везде работать..
ну да ладно, запишем в загадки пока..)

Цитата:
Alt + щелчок почему-то не пашет
тоже вопрос интересный, возможно - в лине как-то по другому кнопы обрабатываются, хотя я хз, что здесь не так..

Цитата:
Можно ли выкинуть покрашенные фрагменты?
можно, это же прибавка "пустого текста" => её можно и не делать, в твоём варианте это лишние операции..

Цитата:
переносов все еще нет
попробуй всё же поиграться с перестановкой трёх значенией - "\n, \r и \f (в комбинациях).."
в смысле - в регулярке замены <br> вместо \n попробовать поставить \n\r или ещё как (у меня если так - то по два переноса)..
ну или менять на код символа переноса строки (\x0A - икс-ноль-A) - спецом проверил, у меня норм переносит..
 
если и после этого не полетит - у мну идеи кончились, я так и не пойму - с фига там слэш режется..
а если вместо \n ставить \\n (с двумя слэшами) - получается как у тебя - переносы заменяются, только уже на текстовку \n..
если совсем убрать эту замену - тогда текст также в одну строку и пойдёт, разделителей ведь совсем не будет..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 05:19 09-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Цитата:
...возможно - в лине как-то по другому кнопы обрабатываются
Ну, Linux тут вообще ни при чем --- я ведь под Windows на виртуальной машине тестирую
Цитата:
...а если вместо \n ставить \\n (с двумя слэшами) - получается как у тебя - переносы заменяются, только уже на текстовку \n..
А вот и оказалось не так). То что \n заменяется на n наталкивало на мысль, что с экранированием что-то не так. Вот и решил попробовать --- сработал как раз вариант с
Код:
\\n
! То же самое и с
Код:
\\x0A

 
В общем, огромное тебе спасибо!
Думаю, ты тоже кое-какую пользу вынес
 
P. S. Напоследок --- как теперь этот код превратить в UserScript? Оформил в следующий шаблон Tampermonkey
Код:
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://forum.ru-board.com
// @grant        none
// ==/UserScript==
 
(function(){
//  'use strict';
  function s(){
    var d=document.createElement("a"),
    h=(new DOMParser).parseFromString(document.querySelectorAll(".post")[this.id].innerHTML.split(/<table[^>]+"sing">/)[0].replace(/[ ]*<br>[ ]*/g,'\\n'),"text/html"),
    l=h.getElementsByTagName('a'),
    h,
    i=0;
    for(i;i<l.length;i++)l[i].href.match('://')&&(l[i].innerHTML=decodeURI(l[i].href));
    h=new Blob([(new DOMParser).parseFromString(h.documentElement.outerHTML,"text/html").documentElement.textContent.replace(/[ ]+/g,' ').replace(/\s\[\?\]/g,'')],{type:"text/plain"});
    d.setAttribute("href",URL.createObjectURL(h));
    d.setAttribute("download",Date.now());
    d.click();
    d.remove()
  }
  for(var i=0,a=document.querySelectorAll(".post");i<a.length;i++){
    a[i].parentNode.firstChild.innerHTML="<a id="+i+" class='tpc' href=javascript:>Сохранить текст</a> | "+a[i].parentNode.firstChild.innerHTML;
    document.getElementById(i).onclick=s
  }
})();
однако получаю ругательство на строку
Код:
h,
типа, 'h' is already defined

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 12:28 09-06-2018 | Исправлено: TeXpert, 13:52 09-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
Ну, Linux тут вообще ни при чем ... А вот и оказалось не так).
значит, всё же есть разница - у меня в нативной винде двойное экранирование аннулирует символ переноса..))
оно, кстати, так и правильно - ведь экранировка спецсимволов превращает их в обычные..
 
по скрипту и ругательству - ога, правильно ругается, лишнее определение переменной, надо убирать и из букмарклета..
сопссно, это остатки от экспериментов, вариантов было много, лишнее недочистилось..)
пасиба за акцент, ща пойду поправлю..  
 
итого, если твой код в скрипт (лишнее зачеркнул):
Код:
// ==UserScript==  
...
// @match        *://forum.ru-board.com/topic.cgi*
...  
// ==/UserScript==  

(function(){  
//  'use strict';
 
function s(){  
    var d=document.createElement("a"),  
    h=(new DOMParser).parseFromString(document.querySelectorAll(".post")[this.id].innerHTML.split(/<table[^>]+"sing">/)[0].replace(/[ ]*<br>[ ]*/g,'\\n'),"text/html"),  
    l=h.getElementsByTagName('a'),
    h,
    i=0;  
    for(i;i<l.length;i++)l[i].href.match('://')&&(l[i].innerHTML=decodeURI(l[i].href));  
    h=new Blob([(new DOMParser).parseFromString(h.documentElement.outerHTML,"text/html").documentElement.textContent.replace(/[ ]+/g,' ').replace(/\s\[\?\]/g,'')],{type:"text/plain"});  
    d.setAttribute("href",URL.createObjectURL(h));  
    d.setAttribute("download",Date.now());  
    d.click();  
    d.remove()  
  }  
for(var i=0,a=document.querySelectorAll(".post");i<a.length;i++){  
    a[i].parentNode.firstChild.innerHTML="<a id="+i+" class='tpc' href=javascript:>Сохранить текст</a> | "+a[i].parentNode.firstChild.innerHTML;  
    document.getElementById(i).onclick=s  
  }
})();
надо бы добавить шаблон для хттпса и только для топиков (в матч) и убрать "обёртку" - скрипт и без неё отработает..
ну и да - со скриптом тоже самое - \\n на винде приводит к "слипанию" текста т.к. вместо переноса ставится \n..)

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 15:16 09-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
В Firefox ESR 52.5.1 (64-bit), под Scientific Linux 6.9 пункт "Сохранить текст" (Bookmarklet) появляется тогда, когда надо делать обертку
Код:
javascript:(function(){function%20s(){var%20d=document.createElement("a"),h=(new%20DOMParser).parseFromString(document.querySelectorAll(".post")[this.id].innerHTML.split(/<table[^>]+"sing">/)[0].replace(/[%20]*<br>[%20]*/g,'\n'),"text/html"),l=h.getElementsByTagName('a'),i=0;for(i;i<l.length;i++)l[i].href.match('://')&&(l[i].innerHTML=decodeURI(l[i].href));h=new%20Blob([(new%20DOMParser).parseFromString(h.documentElement.outerHTML,"text/html").documentElement.textContent.replace(/[%20]+/g,'%20').replace(/\s\[\?\]/g,'')],{type:"text/plain"});d.setAttribute("href",URL.createObjectURL(h));d.setAttribute("download",Date.now());d.click();d.remove()}for(var%20i=0,a=document.querySelectorAll(".post");i<a.length;i++){a[i].parentNode.firstChild.innerHTML="<a%20id="+i+"%20class='tpc'%20href=javascript:>%D0%A1%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%8C%20%D1%82%D0%B5%D0%BA%D1%81%D1%82</a>%20|%20"+a[i].parentNode.firstChild.innerHTML;document.getElementById(i).onclick=s}})();
иначе ошибка. Но при нажатии ничего не происходит.
С UserScript та же песня (Firefox), лишние возни из-за того, что в Google Chrome 67.0.3396.62 UserScript работает неустойчиво
 
Спасибо
 
P. S. В обе функции вставил alert'ы типа "bookmarklet loaded" и "bookmarklet worked" --- работают; вставил всплывающую подсказку title='Текст\nСледующая строка', тоже пашет. Вот только ничего не сохраняет.
Ладно, поедем дальше

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 10:12 10-06-2018 | Исправлено: TeXpert, 13:23 10-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
про "обёртку" - по-хорошему - да, надо её делать, тогда все переменные букмарклета будут "локальными" внутри его и возможных накладок с кодом страницы не будет.. но в хромых под виндой на конкретном сайте (на борде) всё и так работает - поэтому и предложил срубить "лишнее" в скрипте..)
 
про фокс - я тоже попробовал, но там какой-то гемор с запуском, не кукует совсем - не тыкается кнопка..://
но поскольку я фоксом практически не пользуюсь, разбираться не стал..
 
про хромого-67 - и снова скажу - ты б не парился с ним, а взял бы стабильную постарше..)
сам не юзаю, но народ ругается на корявость этой версии..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 16:47 10-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Цитата:
...не кукует совсем - не тыкается кнопка
Тыкается! Писал же выше
Цитата:
В обе функции вставил alert'ы типа "bookmarklet loaded" и "bookmarklet worked" --- работают; вставил всплывающую подсказку title='Текст\nСледующая строка', тоже пашет. Вот только ничего не сохраняет
Как видишь, вызывается и что-то делает. Уточню, это через Bookmarklet
Цитата:
...про хромого-67 - и снова скажу - ты б не парился с ним, а взял бы стабильную постарше..)
Да я бы с радостью --- но у меня выбора почти нет под Linux. Гады с офсайта прячут старые версии, сидел бы на них

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 18:10 10-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
Тыкается! Писал же выше
Цитата:В обе функции вставил alert'ы типа "bookmarklet loaded" и "bookmarklet worked" --- работают; вставил всплывающую подсказку title='Текст\nСледующая строка', тоже пашет. Вот только ничего не сохраняет  
Как видишь, вызывается и что-то делает. Уточню, это через Bookmarklet
ключевое выделил..)
кнопка-то цепляется, да, но так и не понял - какого лешего диалог сохранения не выходит..

Цитата:
Гады с офсайта прячут старые версии, сидел бы на них
ну так пересядь на аналоги, у которых в нормальном доступе все версии..
к примеру - srware iron, практически те же в профиль, но в оф.репозитории ничего не удаляется, качай любую..
попутно - автообновы у него нет, поэтому "неприятных автоматических сюрпризов" не будет..))

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 21:00 10-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Цитата:
ну так пересядь на аналоги, у которых в нормальном доступе все версии..
Дык уже начал... После того, как сам же написал про офсайт с гадами) Получается, сам себе пинок дал
Цитата:
к примеру - srware iron, практически те же в профиль, но в оф.репозитории ничего не удаляется, качай любую..
Так-то оно так, но приходится опять же выбирать версию с подходящими либами, тоже морока
 
А вообще, неужели web-разработчикам не интересно, почему не работает и где собака порылась?

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 23:02 10-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
неужели web-разработчикам не интересно, почему не работает и где собака порылась?
при той скорости, с которой плодятся нынешние релизы, неизбежно срабатывает правило: больше кода = больше багов..  
поэтому лучшим вариантом лечения от принудительного версиоза может быть только отключения автообнов..)
как это делается в никсе я хз, но - по аналогии с виндой - можно и хром заставить сидеть ровно на нужной версии..
 
кстати, и с букмарклетами/скриптами разные версии могут (в принципе) работать по разному, что и бесит порой..
не, я понимаю, каэшна, шо развитие движка и всё такое, но обратная совместимость должна быть по-любому..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 13:44 11-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Код:
 
// ==UserScript==
// @name         TestUserscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        *://forum.ru-board.com/topic.cgi*
// @grant        none
// ==/UserScript==
 
(function(){
//  'use strict';
  var my_saver_script = document.createElement('script');
  my_saver_script.setAttribute('src','https://cdn.rawgit.com/eligrey/FileSaver.js/5ed507ef8aa53d8ecfea96d96bc7214cd2476fd2/FileSaver.min.js');
  document.head.appendChild(my_saver_script);

  function s(){
    var d=document.createElement("a"),h,k,l,i;
    k=new DOMParser();
    h=k.parseFromString(document.querySelectorAll(".post")[this.id].innerHTML.split(/<table[^>]+"sing">/)[0].replace(/[ ]*<br>[ ]*/g,'\n'),"text/html");
    l=h.getElementsByTagName('a');
    i=0;
    for(i;i<l.length;i++){
        l[i].href.match('://')&&(l[i].innerHTML=decodeURI(l[i].href));
    };
    h=new Blob([(new DOMParser).parseFromString(h.documentElement.outerHTML,"text/html").documentElement.textContent.replace(/[ ]+/g,' ').replace(/\s\[\?\]/g,'')],{type:"text/plain"});
    saveAs(h, Date.now()+".txt");
    d.remove();
  };
  for(var i=0,b=document.querySelectorAll(".post");i<b.length;i++){
    b[i].parentNode.firstChild.innerHTML="<a id="+i+" class='tpc' href=javascript: title='TestUserscript\nТекст'>Сохранить текст</a> | "+b[i].parentNode.firstChild.innerHTML;
    document.getElementById(i).onclick=s;
  }
})();
Все в твоем коде правильно, проверил отладчиком, вот только сохранение не работало. Я включил известную библиотеку FileSaver, и теперь файл сохраняется. Оцени код с точки зрения знатока.
 
И, вопрос: как сделать так, чтобы автоматически нажималась кнопка сохранения (через настройки браузера не катит, тогда и все другое будет сохраняться без спроса, а мне этого не надо). Вот здесь автор FileSaver пишет, как реализовать отказ
Цитата:
...you can implement an abort button that aborts the FileSaver

Код:
var filesaver = new FileSaver(blob, "video.webm");
abort_button.addEventListener("click", function() {
  filesaver.abort();
}, false);
 
а мне бы надо просто автоматом нажать "Сохранить"
 
 
Спасибо


----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 11:32 13-06-2018 | Исправлено: TeXpert, 11:35 13-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
Оцени код
убрал каменты и засунул в букмарклет - пашет, ошибок нет, результат аналогичен "старому" букмарклету..)
 
по коду - чисто на глаз - не хватает ожидания загрузки либы с репозитория, хотя при быстром тырнете и так проканает..)
вопчем, я бы добавил событие и отрисовал бы кнопки сохранения только после успешной загрузки филесейвера:
Код:
(function(){  
  var my_saver_script = document.createElement('script');  
  my_saver_script.setAttribute.........
  function s(){  
......
  };  
my_saver_script.onload = function () {
    for(var i=0,b=document.querySelectorAll(".post");i<b.length;i++){  
....
    document.getElementById(i).onclick=s;  
  }
}  
})();  
для букмарклета будет аналогично - ведь там кнопка отрисуется сразу же после нажатия, а скрипт с репозитория может не успеть загрузиться и при клике может вылезти ошибка.. ну а с указанной задержкой кнопки отрисуются только когда скрипт уже "на месте"..)

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 14:36 13-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Спасибо, а вот как насчет моего последнего вопроса? Люди пишут, что в Chrome файл сохраняется без запроса, а я-то эксплуатриую скрипт под Firefox, а тут вылезает диалог сохранения. Как бы "нажать" кнопку сохранить программно?

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 14:47 13-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
..про автоматику:
Цитата:
как сделать так, чтобы автоматически нажималась кнопка сохранения  
хз, у нас ведь в любом случае вызывается штатный браузерный диалог сохранения, скрипт к нему доступа не имеет..
и это правильно - иначе независимо от настроек всякая шняга на винт сохраняться сможет..
т.ч. тут либо в настройках отключать либо каждый раз "угу" говорить..)
 
Добавлено:
TeXpert
Цитата:
Люди пишут, что в Chrome файл сохраняется без запроса
так у людей, поди, галка стоит по умолчанию - то бишь снята..  

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 14:54 13-06-2018
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TheBarmaley
Цитата:
...в любом случае вызывается штатный браузерный диалог сохранения, скрипт к нему доступа не имеет..
и это правильно
В принципе это понятно, но была слабая надежда)
 
По твоим рекомендациям переписал --- теперь один и тот же код работает в Firefox (Linux) и Chrome (Windows). Кстати, это показывает, что Linux ни при чем, а ведь ты думал, что там как-то по-другому идет обработка
 
В любом случае, мы победили, с чем и поздравляю!)

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3620 | Зарегистр. 08-02-2003 | Отправлено: 16:47 16-06-2018
TheBarmaley



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Цитата:
это показывает, что Linux ни при чем, а ведь ты думал, что там как-то по-другому идет обработка  
и тем не менее - ведь почему-то простейшее сохранение по программному клику не сработало в линухе, хотя в винде оно на ура..)
я про самые первые версии букмарклета говорю, там ведь (по сути) точно также создаётся блоб-объект и точно так же вызывается диалог сохранения.. ессно, есть ещё подозрения на излишне  закрученные гайки в 67-м хроме, но это я проверить не могу..

----------
..the one of.. ··· ..sam-&-pol..

Всего записей: 17807 | Зарегистр. 07-06-2006 | Отправлено: 06:47 17-06-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Компьютерный форум Ru.Board » Компьютеры » Программы » Bookmarklets | Favelets | Букмарклеты


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru