Ubah Semua Teks URL menjadi URL Aktif
Ubah semua karakter di dalam <body>
yang cocok dengan pola teks URL menjadi tautan aktif:
// Detect links pattern
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
// Wrap the matched pattern with an anchor tag
$('body').html($('body').html().replace(exp, "<a href='$1'>$1</a>"));
Sumber: Darcy Clarke - Make Text URLs Active
Pembaharuan 22 Februari 2013
Saya telah mengubah sedikit kode ini agar ketika pola exp
cocok dengan URL yang merupakan tautan asli, ini tidak akan membuat tautan tersebut menjadi rusak seperti ini:
Dibandingkan mengganti string yang cocok menjadi tautan, akan lebih baik jika kita mengubahnya menjadi elemen <span>
terlebih dahulu. Kemudian, ketika semua string yang telah cocok terbungkus oleh elemen <span>
, singkirkan semua tautan asli yang mungkin membungkus elemen ini. Terakhir, cukup ganti semua elemen <span>
menjadi <a>
:
// Detect links pattern
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
// Wrap the matched strings with `<span class="fake-link"></span>`
$('body').html($('body').html().replace(exp, "<span class='fake-link'>$1</span>"));
$('.fake-link').each(function() {
// Extra job: Check if parent is an anchor
if ($(this).parent().is('a')) {
// If `true`, then unwrap the original anchor which has been written by default from `.fake-link`
$(this).unwrap();
}
// Replace `.fake-link` with an anchor tag
$(this).replaceWith('<a href="' + $(this).text() + '">' + $(this).text() + '</a>');
});
Pembaharuan 25 Februari 2013
Yang ini lebih aman:
// http://jmrware.com/articles/2010/linkifyurl/linkify.html
// Replacement => '$1$4$7$10$13<a href="$2$5$8$11$14">$2$5$8$11$14</a>$3$6$9$12'
var isUrl = /(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]*)*[a-z0-9\-_~$()*+=\/#[\]@%])/img;
Contoh Penggunaan
Karakter pengganti adalah berupa $1$4$7$10$13<a href="$2$5$8$11$14">$2$5$8$11$14</a>$3$6$9$12
:
var txt = document.getElementById('text');
txt.innerHTML = txt.innerHTML.replace(isUrl, '$1$4$7$10$13<a href="$2$5$8$11$14">$2$5$8$11$14</a>$3$6$9$12');
16 Komentar
Beben Koben
hihihi ternyata master hompimpa Taufiq Nurrohman tuh yah :D
Yopi Hasopa
kelemahannya apa gan kalo pake cara ini? mohon diperjelas lagi :)
terima kasih.
Taufik Nurrohman
@Yopi Hasopa Kelemahannya, kalau JavaScript didisable link tidak akan menjadi aktif. Apapun bentuknya, dimanapun tempatnya, cara manual masih akan tetap menjadi cara terbaik karena kitalah yang mengendalikan segala sesuatu, bukan komputer. Ini sebagai alternatif saja. Misalnya, jika kita berada di dalam sebuah forum, mungkin tangan kita akan capek jika harus menulis link dengan kode HTML. Dengan cara ini, kita tidak perlu mengetik tag
<a>
. Cukup ketik URLnya saja nanti saat diterbitkan akan berubah menjadi URL aktif. Selengkapnya bisa mempelajari dari link sumbernya, atau dari halaman demo.Yopi Hasopa
@Taufik Nurrohman terima kasih gan pencerahannya, sangat membantu :)
Aldy
bang gimana klo bikin link kyk yg di facebook, klo di klik linknya berubah jadi gini contohnya http://www.facebook.com/l.php?u=http%3A%2F%2Fyoutu.be%2FuF56D6jg240&h=PAQHeFJCoAQH4C1UkvWdM_mRUeWvabYwN52PzVeX3oPFEgQ
Taufik Nurrohman
@Sadeva Aldy Pratama Kurang tahu sih. Itu sistem
redirect
dari Facebook pribadi. Jadi tidak bisa dibuat menggunakan JavaScript.Aldy
@Taufik Nurrohman saya ingin ngubah semua link di blog saya jadi seperti ini http://alprablog.blogspot.com/p/iframe.html?iframe=hompimpaalaihumgambreng.blogspot.com
bsa ga mas?
Taufik Nurrohman
@Sadeva Aldy Pratama Bisa. Pakai saja
.replace()
untuk mengganti setiap akhir URL dengan?iframe=hompimpaalaihumgambreng.blogspot.com
Demo: http://jsfiddle.net/tovic/9Dhdk/
Ngomong-ngomong, buat apa ya? Hehe... :p
Aldy
@Taufik Nurrohman buat sya sndri bang, hehe
1 lg, ini pke jquery tambahan ga? maklum saya bari kenal dgn blog ini :D
Taufik Nurrohman
@Sadeva Aldy Pratama Nggak perlu. Sekali saja sudah masang satu JQuery itu untuk selamanya.
Aldy
@Taufik Nurrohman jquerynya yg mana mas?
Unknown
klw kebalikannya gimana mas, kaya kolom komentar di blog ini "Link hidup dalam komentar akan terhapus secara otomatis" :D
Taufik Nurrohman
⇒ /2012/07/no-live-links.html
Kang Rian
bermanfaat sekali untuk saya yang baru ada keinginan belajar jquery , walau memusingkan tapi mengasyikan bila tutorial nya seperti ini .. sangat membantu , terima kasih kang taufik ..
Bardil
=p* kalau mengubah link menjadi html di belakangnya gimana bang ? :)
Menthor Kita
good