Napisałem sobie dawno temu prosty skrypt JavaScript, którego zadaniem jest otwieranie wprowadzonych linków w nowym oknie/karcie.
Jakie tego przeznaczenie? Otóż często zachodzi potrzeba otwarcia dużej ilości linków, np. odnośników do filmu lub serialu. Żmudne jest więc kopiowanie każdego linku po kolei – dużo łatwiej byłoby po prostu wkleić adresy w pole tekstowe i kliknięcie jednego przycisku :-)
Piszemy skrypt
Skrypt był napisany dość dawno temu. Nie używano wtedy tak powszechnie jQuery i innych wynalazków, a pisano po prostu w czystym JavaScript. Oto źródło skryptu z wewnętrznymi komentarzami (links.js):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /** * * Get links from textarea * * @param string text_id form id with links * **/ function getLinks(text_id) { // prepare variables var links_field = document.getElementById(text_id); var links_array = links_field.value.split('\n'); // open links in new window openLinks(links_array, links_field); } /** * * Open links in new windows * * @param array links_array links to open in new windows * @param string links_field form id to clear text (optional) * **/ function openLinks(links_array, links_field) { // prepare variable var links_correct = []; // regex var _validUrl = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; var _lTrim = /^\s+/g; // check links and remove incorrect links for (i = 0; i <= links_array.length-1; i++) { // clean whitespaces - a'la ltrim links_array[i] = links_array[i].replace(_lTrim, ''); // check validate url if ( _validUrl.test(links_array[i]) ) { links_correct.push( links_array[i] ); } } // total links var links_num = links_correct.length; // error: no links if (links_correct.length < 1) { alert('Proszę wpisać linki (każdy w osobnej linii).'); return false; } // answer var answer = confirm("Poprawnych adresów URL: " + links_num + ".\nCzy na pewno chcesz otworzyć te linki w nowych kartach?"); if (!answer) return false; // opens in new window for (i = 0; i <= links_num-1; i++) { window.open( links_correct[i] ); } // clear all text if (links_field != 'null' || links_field !== '') { links_field.value = ''; } // block other actions return false; } |
Myślę, że kod nie wymaga większego objaśnienia. Mamy dwie funkcje:
- openLinks – jako argument pobiera identyfikator pola tekstowego (textarea), z którego pobiera linki i przekazuje kolejnej funkcji do otwarcia,
- openLinks – właściwa funkcja dokonująca masowego otwierania linków w nowym oknie/karcie.
Co dalej z tym zrobić?
Ok, skoro już mamy kod JavaScript wykonujący wszystkie zadania, napiszmy na szybko kod HTML wykorzystujący tę funkcjonalność:
1 2 3 4 5 6 7 8 9 10 11 | <script type="text/javascript" src="links.js" charset="UTF-8"></script> <p>Wpisz listę adresów WWW, które chcesz otworzyć w nowych kartach:</p> <textarea id="url_list" cols="80" rows="20"> http://blog.kamilbrenk.pl/ http://testy-zawodowe.pl/ </textarea> <input type="button" value="Otwórz wszystkie linki w nowych kartach" onclick="return getLinks('url_list');"> |
I to wszystko. Mamy małego „ułatwiacza” dla leniwych :-)
Nie powiem, szczwane.
Można przerobić, ale trzeba by z lekka zmienić strukturę funkcji. Nie jest to zbyt pięknie napisany kod – moim celem było szybkie napisanie funkcji ułatwiającej otwieranie linków w nowych zakładkach w tym samym czasie, na własne potrzeby. Przy okazji tutaj wrzuciłem :)
Właśnie tego szukałem ale działa tylko pod firefoxem w operze i google chrome otwiera tylko pierwszą zakładkę, pomimo tego chętnie postawię browca za ten skrypt.
pozdro.
@Szary: mi w Chrome działa, aczkolwiek coś może Ci blokować te kolejne okienka. Możesz dać opóźnienie dla otwieranych okien (setTimeout(openWindow, 1) dla każdego okienka) lub utworzyć X ukrytych elementów A i w każdego „kliknąć” z poziomu JS – być może to obejdzie przeglądarkowe zabezpieczenia.
Wielkie dzięki za skrypcik. Dokładnie tego szukałem ;)
genialne! na chrome faktycznie blokuje ale na vivaldim hula :D Dzięki wieeelkie ułatwiłeś mi znacznie prace :*
Witam, jak zrobić aby otwierało strony bez http na poczatku, aby nie sprawdzał poprawności?
onet.pl
wp.pl
itd.
Super sprawa… bardzo przydatne.. dzieki i pozdrawiam..