Расширяем функционал Nitro


Recommended Posts

Сегодня поговорим о том, как расширить функционал браузера Nitro.
Nirto пустой, у него есть только домашняя страница и закладки. Именно поэтому он и быстрый. Но людям нужен функционал. Но Nitro с расширениями уже не будет таким быстрым, хотя я надеюсь, что Nitro станет основой для MX5, и у нас будет два родственных браузера: быстрый Nitro и функциональный MX5. Почему бы и нет?
Когда-то у нас не было расширений, не только для Maxthon, вообще. В те времена у нас были в лучшем случае закладки и мы использовали их для простеньких скриптов, которые запускались по клику. Сейчас у нас нет расширений для Nitro, у нас есть только закладки. Так что времена скриптов возвращаются.

Что нужно делать?
  1. Кликаем по звездочке в правом верхнем углу (Favorites)
  2. Выбираем Add to Favorites
  3. Копируем скрипт в строку с адресом
  4. Жмем Add, чтобы сохранить
Всё. Теперь скрипт будет запускаться по клику всякий раз, когда он нужен. Кстати, в Maxthon это тоже работает: функционал практически такой же, что и у расширений, но запускается по клику, а значит не потребляет ресурсы в фоне.
Теперь поговорим о том, какие скрипты были бы полезны для пользователей.

Скачивалки:
  • SaveFrom. SaveFrom - это скачивалка видео, аудио и фото, но работает он только в Firefox, Chrome, Opera и прочих Хромиумах. Для Maxthon нормального SaveFrom нет, но можно использовать скрипт с расширением ViolentMonkey или просто установить урезанную версию. Из нее мы и возьмем скрипт для Nitro (см. скрипншоты, но они идут не в том порядке)
    javascript:q=(document.location.href);void(open('http://en.savefrom.net/#url='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));
  • KeepVid. Еще одна скачивалка видео. Как и в случае с SaveFrom, полная версия KeepVid отказывается работь в Maxthon в виде отдельного расширения, но сам скрипт можно загнать в ViolentMonkey. Как и в случае с SaveFrom, под Maxthon есть урезанная версия - KeepVid Light, которая никак не может пройти проверку в Extensions Center. Букмарклет должен работать и в Nitro:
    javascript:(function(){window.open('http://keepvid.com/?url='+encodeURIComponent(location.href)+'')})();
  • Save2Go. В теории скачивает flash-контент с любого сайта, на деле довольно трудно найти сайт, с которым скрипт нормально работает. Так что использовать его в обычных браузерах довольно глупо, но в Nitro он может пригодиться.
    javascript:(function(){if(typeof(Save2GO)!='undefined'){Save2GO()}else{var%20s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src%20=%20'http://save2go.ru/sys/inc/bookmarklet.js'}})();
  • Flickr Downloader. Скрипт, позволяющий скачивать фото с Flickr в максимальном разрешении. За основу возьмем скрипт Евгения Орехова. Но должен предупредить: я не проверял, работает ли он в Nitro, я сделал расширение для Maxthon. Но если оно вам надо, почему бы не проверить самому?
    /*jslint browser: true */ (function () { "use strict"; var originalSizeLink = document.querySelector(".Original > a"), canonicalUrl = document.querySelector("#canonicalurl").href, biggestSizeUrl = canonicalUrl + "/sizes/k/", secondBiggestSizeUrl = canonicalUrl + "/sizes/h/", xhr, imageUrl; function downloadImage() { var a = document.createElement("a"); a.href = window.URL.createObjectURL(xhr.response); a.download = document.title.split(" |")[0] + ".jpg"; document.body.appendChild(a); a.click(); } function openImage() { var aElement = document.querySelector(".all-sizes").cloneNode(), liElement = document.createElement("li"); aElement.href = imageUrl; aElement.target = "_blank"; liElement.appendChild(aElement); document.querySelector(".sizes").appendChild(liElement); aElement.click(); } function getImage() { var parsedDom; if (xhr.status === 200) { parsedDom = new window.DOMParser() .parseFromString(xhr.responseText, "text/html"); imageUrl = parsedDom.querySelector("#allsizes-photo > img").src; xhr = new XMLHttpRequest(); xhr.responseType = "blob"; xhr.onload = downloadImage; xhr.onerror = openImage; xhr.open("GET", "https://cors-anywhere.herokuapp.com/" + imageUrl); xhr.send(); } } function loadBiggestSizePage() { if (xhr.status === 200) { if (xhr.responseURL !== biggestSizeUrl) { biggestSizeUrl = secondBiggestSizeUrl; } xhr = new XMLHttpRequest(); xhr.onload = getImage; xhr.open("GET", biggestSizeUrl); xhr.send(); } } if (originalSizeLink) { originalSizeLink.click(); } else { xhr = new XMLHttpRequest(); xhr.onload = loadBiggestSizePage; xhr.open("HEAD", biggestSizeUrl); xhr.send(); } }());

 

Переводчики:

  • Bing Translator. Получется что-то похожее на Microsoft Translator или Bing Translator для Maxthon. Но нам нужно взять скрипт для конкретно нашего языка. Идем сюда, выбираем родной для нас язык и копируем ссылку ниже.
    Для русского языка скрип выглядит так:
    javascript:(function(){var s = document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=ru'; document.body.insertBefore(s, document.body.firstChild);})()
    Для английского языка скрипт будет выглядить вот так:
    javascript:(function(){var s = document.createElement('script'); s.type = 'text/javascript'; s.src = 'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=en'; document.body.insertBefore(s, document.body.firstChild);})()
  • PROMT:
    javascript:q=(document.location.href);void(open('http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));
  • Переводчик Google:
    javascript:q=(document.location.href);void(open('https://translate.google.com/translate?sl=auto&tl=ru&js=y&prev=_t&hl=ru&ie=UTF-8&u='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));
  • Яндекс.Переводчик:
    javascript:q=(document.location.href);void(open('https://z5h64q92x9.net/sandbox?dir=auto&ui=ru&lang=en-ru&url='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));
    Переводчик Google, PROMT и Яндекс.Перевод взяты из расширения MultiTranslator для Maxthon.

Читалки:
  • Readability Mod. Режим чтения + ночной режим:
    javascript:(function(){x=document.createElement('SCRIPT');x.type='text/javascript';x.src='http://brettterpstra.com/share/readability.js?x='+(Math.random());document.getElementsByTagName('head')[0].appendChild(x);y=document.createElement('LINK');y.rel='stylesheet';y.href='http://brettterpstra.com/share/readability.css?x='+(Math.random());y.type='text/css';y.media='screen';document.getElementsByTagName('head')[0].appendChild(y);})();
  • Squirt Reader. Инсрумент для скорочтения. Что-то вроде суфлера или бегущей строки. Вы смотрите в одну точку, не нужно бегать глазами по тексту, а сам текст меняется с заданой скоростью. Объяснить сложно, лучше один раз попробовать.
    javascript:(function(){sq=window.sq=window.sq||{};if(sq.script){sq.again();}else{sq.bookmarkletVersion='0.3.0';sq.iframeQueryParams={host:'//squirt.io',userId:'601ff41c-50fc-4a65-b582-3719751b8b6a',};sq.script=document.createElement('script');sq.script.src=sq.iframeQueryParams.host+'/bookmarklet/frame.outer.js';document.body.appendChild(sq.script);}})();

 

Расшаривалки:

  • TLDRify. Расшаривалка выделенного текста или конкретной части страницы. На случай важных переговоров, когда нужно ткнуть собеседника носом:
    javascript:(function(d){d.body.appendChild(d.createElement('script')).src='//tldrify.com/static/js/bookmarklet.min.js?_'+new%20Date().getTime();})(document);
  • AddThis:
    javascript:void((function(svc)%20{var%20d=document,w=window,p=0,b=function(){if(!p){p=1;if(_atc.xol)_adr.onReady();if(w.addthis_sendto)addthis_sendto(svc||'bkmore',{product:'bmt-'+_atc.ver})}else{p=0;if(_atw)_atw.clb()}};if(!w._atc){var%20ol=w.addthis_onload||[],o=d.createElement('script');w.addthis_product%20=%20'bmt-250';o.src='//s7.addthis.com/js/250/addthis_widget.js#domready=1&username=bookmarklet';ol.push(b);w.addthis_onload=ol;d.getElementsByTagName('body')[0].appendChild(o)}else%20b()})())
  • Shareaholic:
    javascript:(function(){var%20service='all';if(window.Shareaholic%20&&%20window.Shareaholic.prototype%20&&%20window.Shareaholic.prototype.Bookmarklet){Shareaholic.init_bookmarklet(service)}else{var%20shr=document.createElement('script');shr.type='text/javascript';shr.async='true';shr.src='//dtym7iokkjlif.cloudfront.net/assets/pub/shareaholic.js';shr.onload=shr.onreadystatechange=function(){var%20rs=this.readyState;if(rs%20&&%20rs!='complete'%20&&%20rs!='loaded'){return;}try{Shareaholic.init_bookmarklet(service)}catch(e){%20}};document.getElementsByTagName('head')[0].appendChild(shr);}})();void(0);

 

Синхронизация:

  • Pocket+. Добавляет открытую вкладку в копилку на сайте GetPocket.com. Можно использовать для синхронизации списка сайтов между разными браузерами и устройствами:
    javascript:(function(){var e=function(t,n,r,i,s){var o=[2144535,5909549,4482627,6361312,6256000,3231139,2187251,9437389,1988610,3463569];var i=i||0,u=0,n=n||[],r=r||0,s=s||0;var a={'a':97,'b':98,'c':99,'d':100,'e':101,'f':102,'g':103,'h':104,'i':105,'j':106,'k':107,'l':108,'m':109,'n':110,'o':111,'p':112,'q':113,'r':114,'s':115,'t':116,'u':117,'v':118,'w':119,'x':120,'y':121,'z':122,'A':65,'B':66,'C':67,'D':68,'E':69,'F':70,'G':71,'H':72,'I':73,'J':74,'K':75,'L':76,'M':77,'N':78,'O':79,'P':80,'Q':81,'R':82,'S':83,'T':84,'U':85,'V':86,'W':87,'X':88,'Y':89,'Z':90,'0':48,'1':49,'2':50,'3':51,'4':52,'5':53,'6':54,'7':55,'8':56,'9':57,'\/':47,':':58,'?':63,'=':61,'-':45,'_':95,'&':38,':36,'!':33,'.':46};if(!s||s==0){t=o[0]+t}for(var f=0;f<t.length;f++){var l=function(e,t){return a[e[t]]?a[e[t]]:e.charCodeAt(t)}(t,f);if(!l*1)l=3;var c=l*(o[i]+l*o[u%o.length]);n[r]=(n[r]?n[r]+c:c)+s+u;var p=c%(50*1);if(n[p]){var d=n[r];n[r]=n[p];n[p]=d}u+=c;r=r==50?0:r+1;i=i==o.length-1?0:i+1}if(s==326){var v='';for(var f=0;f<n.length;f++){v+=String.fromCharCode(n[f]%(25*1)+97)}o=function(){};return v+'51bcb34758'}else{return e(u+'',n,r,i,s+1)}};var t=document,n=t.location.href,r=t.title;var i=e(n);var s=t.createElement('script');s.type='text/javascript';s.src='https://getpocket.com/b/r4.js?h='+i+'&u='+encodeURIComponent(n)+'&t='+encodeURIComponent(r);e=i=function(){};var o=t.getElementsByTagName('head')[0]||t.documentElement;o.appendChild(s)})()

 

P.S. Если знаете другие скрипты, которые запускаются по клику и работают в Nitro, пишите. Кому-то они пригодятся!
В подобном обсуждении на старом форуме было несколько предложений, которые сюда не попали, но, возможно, вам они покажутся полезными.
 

Edited by Semenov-Sherin
  • Like 1
Link to post
Share on other sites
  • 2 months later...

И еще вопрос: можно ли использовать без изменений скрипт AddThis для создания расширения?
Ну, т.е.          

 

"actions": [{

                            "type": "script", 
                     "entryPoints": ["toolbar"],
                              "js": ["script.js"]
                    }]
 
и засунуть скрипт AddThis в script.js
Link to post
Share on other sites
  • 3 weeks later...

Можно ли использовать без изменений скрипт AddThis для создания расширения? Ну, т.е.         

"actions": [{   "type": "script", 

                     "entryPoints": ["toolbar"],
                     "js": ["script.js"] }]

 

Можно, но он не станет работать, выдаст ошибку в консоле. Работать их тулбара ему что-то мешает, надо редактировать.

Link to post
Share on other sites
  • 2 weeks later...

Добрый день!

Подскажите пожалуйста, браузер понравился, особенно когда постоянно глючат последние версии макстона.

Но как сюда добавить синхронизацию с облаком от макстона - и всё - я перехожу на нитро, но закладок очень нехватает синхронизации, можно как то прикрутить?

Edited by retj7144737
Link to post
Share on other sites
  • 1 month later...

Как сюда добавить синхронизацию с облаком от макстона - и всё - я перехожу на нитро, но закладок очень нехватает синхронизации, можно как то прикрутить?

Можно использовать сервисы вроде Pocket и Symbaloo. Придется создать две закладки: одна со скриптом, чтобы сохранять сайты, другая - ссылка на сайт, чтобы смотреть. Для MX есть расширения.

Link to post
Share on other sites
  • 3 months later...
On 15.08.2015, 11:11:07, retj7144737 said:

Добрый день!

Подскажите пожалуйста, браузер понравился, особенно когда постоянно глючат последние версии макстона.

Но как сюда добавить синхронизацию с облаком от макстона - и всё - я перехожу на нитро, но закладок очень нехватает синхронизации, можно как то прикрутить?

Закладки онлайн, просто сделать стартовую страницу  http://www.iknop.ru/

Link to post
Share on other sites
1 hour ago, Alex L said:

Закладки онлайн, просто сделать стартовую страницу  http://www.iknop.ru/

Я могу сделать расширение для Maxthon. Но мне понадобится пара ссылок. И кто-то должен затестить. 

Link to post
Share on other sites
  • 1 year later...
On 18.07.2015 at 8:43 PM, vova_n said:

Перестал работать скрипт Переводчик Bing Translator. Просто ничего не происходит. Это только у меня?

Microsoft убили официальный букмарклет. То ли случайно, то ли намеренно. Вот этот вроде работает:

javascript:q=(document.location.href);void(open('https://www.microsofttranslator.com/bv.aspx?from=&to=auto&a='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));

 

  • Like 1
Link to post
Share on other sites