• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Cum sa adaugi target=”_blank” la adresele web externe?

22
  • Publicat de Andrei Avădănei
  • în Javascript, Ajax, jQuery · Tehnic · Wordpress
  • — 2 iul., 2010 at 12:12 pm

O problema care tine uneori de bunul simt, iar alteori de faptul ca incercam sa ii tinem pe cititori cat mai mult pe paginile noastre este deschiderea articolelor ce duc in alte domenii in taburi noi. Problema este destul de urata daca stam sa luam la rand fiecare link in parte, sau decidem sa completam noi manual cand scriem un articol.

Avand in vedere ca majoritatea ati lucrat cu jQuery, eu va propun o modalitate dinamica de a face acest lucru. Pentru inceput, instalati ultima versiune de jQuery de aici. Modificati tema site-ului dumneavoastra si adaugati in header codul de mai jos, inlocuind domeniu.ro si www.domeniu.ro cu numele domeniului vostru.

          $('a').each(function(index) {
		url = $(this).attr('href');
		if(url.indexOf('http://') != -1 || url.indexOf('https://') != -1)
		{
			if(url.indexOf('www.domeniu.ro') == -1 && url.indexOf('domeniu.ro') == -1 && $(this).attr('target') != '_blank') 
				$(this).attr('target', '_blank');
		}
   });

De acum, toate paginile externe vor fi deschise in taburi noi. Enjoy! 😀

Daca acest articol contine o greseala, selecteaza cuvintele sau fraza gresita si tasteaza combinatia de taste Shift + Enter sau apasa click aici pentru a o raporta. Multumim!

Etichete: deschide linkurile externe in taburijavascriptjQuerytarget="_blank"Wordpress

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Primul ziar 3D din Romania
  • Articolul următor Mozilla Firefox a atins 2 miliarde de descarcari ale addon-urilor

22 Comentarii

  1. A.Dragos spune:
    iulie 2, 2010 la 12:15 pm

    Foarte folositor ! Multumesc frumos ! 🙂

  2. Ionut Staicu spune:
    iulie 2, 2010 la 12:24 pm

    Oh, cmon… Incarci ditamai libraria JS doar pentru atata lucru? Ia uite aici:

    var openLinks = function(){
    if (!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=anchors.length-1; i>=0; i--) {
    var theHref = anchors[i];
    if (theHref.hostname && theHref.hostname !== location.hostname)
    theHref.target = "_blank";
    }
    }();

    formatat frumos

    • Andrei Avadanei spune:
      iulie 2, 2010 la 12:41 pm

      Nu o incarci, in wordpress o ai nativ si jumatate din proiectele din ziua de azi au instalata libraria. 😀

  3. GrafsS spune:
    iulie 2, 2010 la 12:35 pm

    Spune si tu: „in loc de ‘domeniu.ro’ scrie domeniul pe care vei folosii scriptul”.

  4. Alter Ego Blog spune:
    iulie 2, 2010 la 12:47 pm

    Libraria tot o incarci indiferent ca vine sau nu cu WordPress 🙂

  5. Ionut Staicu spune:
    iulie 2, 2010 la 12:55 pm

    Andrei, este mai rapdia metoda mea, din punct de vedere al performanței. Daca ții neaparat sa folosesti jQuery , uite doua metode mai rapide decat ce ai tu:

    jQuery('a').filter(function() {
    var theHref = this;
    if (theHref.hostname && theHref.hostname !== location.hostname) {
    jQuery(theHref).attr('target','_blank');
    };
    });

    Și varianta un pic mai slow (dar tot mai rapid decat ce ai pus tu):
    $('a[href^=http]:not([href*=domeniul_tau.com])').attr('target', '_blank');

    In plus, ce faci daca tu ai pluginuri care folosesc DOAR prototype? Sau moo? Incarci jQuery doar pentru a adauga target=”_blank”? Not cool!

    • Andrei Avadanei spune:
      iulie 2, 2010 la 1:37 pm

      Din punct de vedere al performantei, exemplele date de tine nu au cum sa fie mai rapide decat ale mele pentru ca tu faci atribuirea aia la toate linkurile „straine”. Asta inseamna ca exista riscul sa pui _blank la un link care deja il avea ceea ce inseamna apelarea inutila a functiei attr() care mananca muuult mai mult ca verificarile mele. 😀

      Oricum toate trei exemplele date de tine vor pica la adresele relative. 😛

  6. Ionut Staicu spune:
    iulie 2, 2010 la 1:56 pm

    1) Nu cred ca apelezi funcția de mai multe ori, deci nu exista riscul de a adauga aceeasi clasa de doua ori;
    2) Imi poți da un exemplu de site extern relativ? Nu de alta, dar articolul se refera la linkurile externe, nu?
    3) Ia uite cat de rapid este exemplul tau: http://screencast.com/t/MzVmYTJhNTc vs http://screencast.com/t/Y2NmMzAwNGY Sunt ceva mai multe functii apelate si cateva ms in plus…

    Acum argumenteaza tu ca varianta ta este mai rapida 😀

    (bonus)

    • Andrei Avadanei spune:
      iulie 2, 2010 la 2:07 pm

      1. Ba da, practic eu fac niste verificari in care voi seta atributul ala, in vreme ce la tine tot ce e strain va fi setat atributul. Pentru 3 linkuri straine sa zicem, doua cu target blank si 1 fara, tu vei seta de trei ori target=”_blank”, in vreme ce eu ma voi focusa doar pe cel fara. 🙂
      2. Pai la tine cand vei pune un link de genu „<a href=”/relativ”></a>” theHref.hostname va fi null si va fi diferit fata de location.hostname, deci ii va seta target blank, chiar daca este link intern.
      3. Hmm, nu am inteles partea cu numarul de apelari, la tine observ ca sunt in jumatate. Ce ai folosit pentru a testa sa ma lamuresc.

  7. iosif spune:
    iulie 2, 2010 la 1:59 pm

    Imi place ideea, Andrei. Thx pentru ea!

  8. Ionut Staicu spune:
    iulie 2, 2010 la 2:18 pm

    1) si eu fac verificari 🙂
    if (theHref.hostname && theHref.hostname !== location.hostname) {
    IÈ›i verifica doua lucruri: daca linkul are un hostname (adica fix acel domeniu.com) si daca hostname-ul este acelasi cu adresa curenta. Verificarea aia de care spui tu, sa vezi daca are sau nu target=”_blank” este usor inutila. Hai sa-È›i zic si de ce:
    – poÈ›i avea un link extern cu un alt target definit. Varianta ta sterge acel target;
    – apelezi funcÈ›ia asta la incarcarea paginii si atat. SituaÈ›iile in care ai in aceeasi pagina si linkuri `cu` si `fara` sunt atat de rare incat nu merita sa-È›i baÈ›i capul.

    2) citeste la 1)
    3) firebug->console->profile. Iti arata cat dureaza rularea unei functii si ce alte funcÈ›ii apeleaza. Varianta mea nu doar ca apeleaza mai puÈ›ine funcÈ›ii, dar se si executa mai repede 🙂

    • Andrei Avadanei spune:
      iulie 2, 2010 la 2:29 pm

      1. Ah da, nu am observat prima conditie. Oricum, e bine de luat in calcul la modul de teoretic.
      2. Am inteles. Am sa fac si eu niste test ca vad ca acum imi face figuri profile de la consola. 🙂

  9. Ionut spune:
    iulie 2, 2010 la 2:44 pm

    Am si eu o intrebare pentru tine sau programatori.

    Cum pot sa pun in fata tuturor link-urilor externe o pagina de redirect adica ceva de genul:
    http://tutorialepc.ro/redirect/redirect.php?url=http://google.com

    Multumesc anticipat

  10. Ionut Staicu spune:
    iulie 2, 2010 la 2:50 pm

    La modul teoretic??? Èši-am prezentat doua metode mai eficiente!!! :mrgreen:

  11. yo9fah spune:
    iulie 2, 2010 la 4:31 pm

    Sau asa: http://www.inverudio.com/programs/WordPressBlog/NewTabWindowTargetBlankPlugin.php 😀

  12. Florea Cristian spune:
    iulie 2, 2010 la 6:25 pm

    Ar mai fi, ca pluginuri, Zap_NewWindow: http://www.zappelfillip.de/2005-12-05/zap_newwindow/
    si GD Press Tools: http://wordpress.org/extend/plugins/gd-press-tools/ (care mai face o gramada de chestii pe langa asta)

  13. Bogdan spune:
    iulie 2, 2010 la 6:33 pm

    Cred ca este mult mai etic pentru vizitatori ca paginile din site-ul respectiv sa se deschida in acelasi tab. Cu o mica exceptie poate cand este vorba de sectiuni diferite de genul Forum, Galerii foto.
    Deschiderea intr-un tab nou dar si notificarea faptului ca un link este extern tine iar de etica webmasterului. Nu cunosc detalii pentru WordPress (sigur trebuie sa fie ceva) dar in Joomla exista un plugin ce adauga automat target=”_blank” precum si o mica imagine in stilul Wikipedia la orice link extern dintr-un articol.

  14. Andrei Avadanei spune:
    iulie 2, 2010 la 6:42 pm

    @Ionut

    Codul ar arata ca mai jos. Evident pastreaza jquery.

    jQuery('a').filter(function() {
    	var url = this;
        if (url.hostname && url.hostname !== location.hostname) 
          jQuery(url).attr('href','http://tutorialepc.ro/redirect/redirect.php?url=' + jQuery(url).attr('href')); 
    });
    
  15. Ionut spune:
    iulie 3, 2010 la 8:46 pm

    Multumesc Andrei pentru raspuns si ajutor in acelasi timp.

  16. Megapedia spune:
    mai 19, 2011 la 8:05 am

    Salut mia fost folositor ce ati scris mai sus, dar in flash stie cineva cum creez un link extern ?

  17. Ashantyk spune:
    septembrie 18, 2011 la 4:25 pm

    totusi nu v-ati gandit ca in loc sa faceti aceasta treaba la page load sa o faceti on-demand?
    adica in loc sa treceti prin tot dom-ul on page load si sa va puneti tag-ul vostru de target=’_blank’ … n-ar fi mai bine sa luati eventul ‘click’… sa ii verificati target-ul (pe care s-a facut click) din dom si daca e link extern sa deschideti in new tab/new window? Sper ca m-ati inteles :))

  18. Cristi spune:
    mai 5, 2013 la 12:12 pm

    Salut, foarte folositoare informatia, good job.


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    • www.curatenieladomiciliultau.ro
      | Published: February 18, 2019 - 12:00 am
    • santehm.ro
      | Published: February 17, 2019 - 12:00 am
    • waver.weo.ro
      | Published: February 12, 2019 - 12:00 am
    • workflow.weo.ro
      | Published: February 12, 2019 - 12:00 am
    • schedule.emotiondancefestival.ro
      | Published: February 12, 2019 - 12:00 am
    RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • februarie 2019
    L Ma Mi J V S D
    « dec.    
     123
    45678910
    11121314151617
    18192021222324
    25262728  
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Javascript, Ajax, jQuery
  • Cum sa adaugi target=”_blank” la adresele web externe?
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons

Multumim foarte mult ca ne-ai raportat greseala! O vom remedia in cel mai scurt timp posibil.