anda boleh memuat turun kod di sini, dan melihat contoh.
Takeaways Key
kesederhanaan - ia mesti mudah digunakan
Jadi mengapa anda melakukannya dengan skrip, apabila kebanyakan pelayar moden akan memaparkan ikon menggunakan hanya CSS?
a[href$='.doc'] { <br> display: inline-block; <br> padding-left: 16px; <br> background: transparent url(images/icon_doc.gif) center right no-repeat; <br> }
Sebelum kita memulakan, saya ingin mengiktiraf ikon sutera yang sangat baik - dan percuma oleh Mark James di Famfamfam, yang akan kita gunakan dalam artikel ini.
jadi bagaimana ia berfungsi?
Untuk menjadikannya semua berfungsi, terdapat tiga fail yang terlibat:
Halaman HTML yang mengandungi pautan, index.html
Tambahkan pautan ke fail JavaScript dan CSS di tajuk halaman (tukar rujukan fail yang sesuai dengan persediaan tapak anda).
Penjelasan penuh
Jadikan diri anda selesa, kami akan menyelidiki kerja dalaman.
Dalam semangat menjaga perkara yang mudah, kebanyakan persediaan sudah dilakukan untuk anda. Anda hanya perlu menukar konfigurasi jika anda perlu mengubah ikon atau sambungan fail. Terdapat dua tempat untuk membuat perubahan ini: JavaScript (ikonize.js), dan fail CSS (ikonize.css).
Konfigurasi ikonize.js
Di bahagian atas fail, anda akan melihat semua pembolehubah konfigurasi: ClassPrefix, Classexternal, dan Classiconloc.
a[href$='.doc'] { <br> display: inline-block; <br> padding-left: 16px; <br> background: transparent url(images/icon_doc.gif) center right no-repeat; <br> }
classPrefix is the prefix you want to give the individual CSS classes. Use this to prevent any conflicts with any existing CSS classes. The default is iKon_.
classExternal is the name of the CSS class you want to use to show a link to an external site.
Untuk menentukan jenis fail yang pergi ke, kami akan melihat pelanjutan fail. Jenis fail dibahagikan kepada dua kumpulan: mereka yang mempunyai ikon unik, seperti fail torrent, dan mereka yang akan berkongsi ikon yang sama, tetapi mempunyai sambungan fail yang berbeza, seperti fail flash (.fla dan .swf).
Pelanjutan fail kumpulan yang berkongsi ikon yang sama menjimatkan anda mempunyai beratus -ratus kelas dan ikon CSS. Untuk mencapai ini saya telah membuat dua tatasusunan.
Arahan pertama, IndividualClassArray, memegang sambungan fail semua pautan dengan ikon individu. Asas nama kelas CSS adalah sama dengan sambungan fail. Iaitu, fail teks dirujuk dengan 'TXT' dan nama kelas CSS adalah ClassPrefix (ditetapkan lebih awal) dan 'TXT' nama kelas CSS asas, membuat kelas CSS yang dipanggil 'IKON_TXT' dalam kes ini.
a[href$='.doc'] { <br> display: inline-block; <br> padding-left: 16px; <br> background: transparent url(images/icon_doc.gif) center right no-repeat; <br> }
Arahan kedua, ClassArray, sebenarnya adalah pelbagai multidimensi, tetapi jangan biarkan itu meletakkan anda. Pada asasnya, ia adalah sekumpulan tatasusunan individu yang dikelompokkan mengikut jenis ikon yang ingin kami gunakan. Item pertama dalam array ini adalah IndividualClassArray (array ini mesti selalu menjadi array pertama). Arahan berikut adalah serupa dengan array sebelumnya dengan satu perbezaan penting: item pertama dalam setiap tatasusunan adalah nama kelas CSS yang akan digunakan, dan item berikut adalah sambungan fail yang memerlukan kelas itu. Dalam contoh berikut, sambungan fail .swf dan .fla akan dikaitkan dengan kelas 'flash' CSS.
classPrefix is the prefix you want to give the individual CSS classes. Use this to prevent any conflicts with any existing CSS classes. The default is iKon_.
nota: Sambungan fail tidak termasuk titik, iaitu, xls not .xls.
Untuk mudah alih maksimum, nama kelas CSS sebenar yang digunakan akan mempunyai awalan seperti 'Ikon_', yang kami konfigurasi sebelum ini - tetapi dalam array ini kita selalu tidak termasuk awalan. Jadi kelas CSS flash sentiasa dirujuk sebagai 'flash' daripada 'ikon_flash'.
Pautan luaran
Untuk mengetahui sama ada pautan adalah tapak luaran, kita perlu mengetahui nama tuan rumah halaman semasa.
untuk ini kita gunakan:
classExternal is the name of the CSS class you want to use to show a link to an external site.
Ini mengambil lokasi dokumen semasa dan mendapat nama domain menggunakan fungsi QualifyHref untuk memastikan kami mempunyai alamat yang berkelayakan dan fungsi parseUrl untuk mendapatkan nama hos. (Kedua -dua fungsi ini ditulis oleh Guru JavaScript penduduk kami, Brothercake, dan diliputi dalam catatan blognya). Kemudian, apabila kami menambah kelas untuk pautan luaran, kami akan menggunakan nama hos ini untuk menyelesaikan sama ada pautan itu adalah luaran ke laman web kami.
kod yang sebenarnya melakukan kerja
Sekarang kita perlu mendapatkan semua pautan dari halaman menggunakan document.getElementsByTagName ("a"), dan tentukan lanjutan fail pautan.
Kami melakukan ini dengan menggunakan fungsi ParseUrl dan QualifyHref sekali lagi.
Pertama, ambil nilai HREF elemen A:
linkHref = aelements [iv] .href;
Seterusnya, menghuraikan nilai untuk mendapatkan lebih banyak maklumat mengenai pautan:
ourl = parseUrl (kualifikasiHref (linkHref));
kemudian dapatkan lanjutan untuk pautan:
fileext = ourl.extension;
Kemudian, kita perlu gelung melalui pautan ini dan bersenam sama ada mereka memerlukan ikon. Di sinilah ia mula menjadi sedikit lebih rumit. Kita perlu gelung melalui ClassArray dan setiap tatasusunan yang mengandungi. Kami melakukan ini dengan menjalankan gelung dalam gelung. Ya, itu gelung, dalam gelung, dalam gelung! Kod berbulu ini kelihatan seperti ini:
a[href$='.doc'] { <br> display: inline-block; <br> padding-left: 16px; <br> background: transparent url(images/icon_doc.gif) center right no-repeat; <br> }
Adakah pautan ini memerlukan ikon?
Untuk mengetahui sama ada kita perlu menambah ikon, kita akan membandingkan lanjutan fail pautan dengan setiap sambungan yang disenaraikan dalam array kami.
classPrefix is the prefix you want to give the individual CSS classes. Use this to prevent any conflicts with any existing CSS classes. The default is iKon_.
classExternal is the name of the CSS class you want to use to show a link to an external site.
pautan ke tapak luaran
Bekerja jika pautan ke tapak luaran hanyalah satu kes membandingkan nama hos URL yang kami tentukan sebelum ini dengan URL yang kami tetapkan di kawasan konfigurasi.
externalIconLoc is the location of the image to use for the external icon.
Jika benar, kami akan menambahkan elemen imej baru dalam sauh, tambahkan sumber dan ID, dan kemudian tambahkan atribut alt dan tajuk untuk imej. Kami menambah ikon tambahan dan bukan hanya memberikan kelas untuk menunjukkan dengan jelas bahawa pautan ini pergi ke laman web lain, serta menambah tajuk dan atribut alt ke ikon.
IndividualClassArray = Array('txt', 'xls', 'css', 'torrent');
Kelas CSS
mari kita kembali ke fail CSS sekarang.
Berikut adalah kelas CSS kami untuk menambah ikon ke fail .doc. Perhatikan nama kelas diawali dengan 'ikon_' dan kemudian lanjutan fail 'doc'. Kelas ini pada dasarnya meletakkan sedikit padding di bahagian atas dan bawah, dan di sebelah kanan pautan. Ia kemudian menambah imej latar belakang ikon ke dalam ruang itu.
classArray = Array( <br> IndividualClassArray, <br> Array('flash', 'swf', 'fla') <br> );
Untuk ikon pautan luaran kami, kami akan menggunakan struktur kelas yang sedikit berbeza. Kami menambah beberapa padding atas dan bawah untuk memastikan ikon kami tidak bersebelahan.
url = parseURL(qualifyHREF(document.location.href)).hostname;
Jika anda menukar pembolehubah ClassPrefix, jangan lupa untuk mengubah nama kelas ini untuk dipadankan.
Kesimpulan
Membuat hiperpautan menggunakan JavaScript melibatkan memanipulasi model objek dokumen (DOM). Anda boleh membuat elemen anchor baru, menetapkan atribut HREFnya, dan kemudian masukkannya ke badan dokumen. Berikut adalah contoh mudah:
var link = document.createElement ('a');
link.href = "https://www.example.com"; URL halaman yang ingin kami sambungkan. Kami kemudian menetapkan teks pautan itu, dan akhirnya memasukkan pautan ke badan dokumen. Atribut ini menentukan di mana untuk membuka dokumen yang dipautkan. Ia boleh ditetapkan kepada "_blank" untuk membuka dokumen dalam tetingkap atau tab baru, "_self" untuk membuka dokumen dalam bingkai yang sama seperti yang diklik (ini lalai), "_parent" untuk membuka dokumen dalam bingkai induk, atau "_top" untuk membuka dokumen dalam badan penuh tetingkap. Berikut adalah contoh:
var link = document.createelement ('a');
link.href = "https://www.example.com";
var link = document.getElementById ('myLink'); var link = document.getElementById ('myLink'); var link = document.createeelement ('a');
var link = document.createelement ('a');
link.href = "https://www.example.com"; Tetapkan ke "Pergi ke Example.com", yang akan dipaparkan sebagai tooltip apabila tetikus bergerak ke atas pautan. Kaedah ini menghilangkan nod kanak -kanak tertentu dari elemen yang ditentukan. Berikut adalah contoh:
var link = document.getElementById ('MyLink'); Bagaimana saya boleh menukar teks hiperpautan menggunakan JavaScript? Harta ini menetapkan atau mengembalikan kandungan teks nod yang ditentukan, dan semua keturunannya. Berikut adalah contoh:
var link = document.getElementById ('myLink');
link.style.color = "merah";
link.style.fontsize = "20px"; Pendengar kepada hiperpautan menggunakan JavaScript? Pendengar acara boleh ditambah ke hiperpautan menggunakan kaedah 'AddEventListener'. Kaedah ini melampirkan pengendali acara ke elemen yang ditentukan. Berikut adalah contoh:
link.addeventListener ('klik', function () {
alert ('anda mengklik pautan!'); Apabila pautan diklik, kotak amaran akan dipaparkan.
Bagaimana saya boleh menghalang hiperpautan daripada mengikuti URL menggunakan JavaScript? Kaedah ini membatalkan acara jika ia dapat dibatalkan, yang bermaksud bahawa tindakan lalai yang dimiliki oleh peristiwa itu tidak akan berlaku. Berikut adalah contoh:
link.addeventListener ('klik', fungsi (event) {
event.preventDefault (); Dengan IDnya, kemudian lampirkan pendengar acara klik kepadanya. Apabila pautan diklik, ia tidak akan mengikuti URL, dan kotak amaran akan dipaparkan. Atribut ini menyatakan bahawa sasaran akan dimuat turun apabila pengguna mengklik pada hyperlink. Berikut adalah contoh:
var link = document.createeelement ('a');
link.href = "https://www.example.com/myfile.pdf";
Link.download =" myfile.pdf "; Fail ";
document.body.appendchild (link);
Dalam kod ini, kita mula -mula membuat elemen anchor baru, kemudian tetapkan atribut HREF ke URL fail yang kita mahu muat turun. Kami kemudian menetapkan atribut muat turun ke nama fail, dan akhirnya masukkan pautan ke badan dokumen. Bagaimana saya boleh membuat hiperpautan yang membuka klien e -mel menggunakan JavaScript? Protokol ini membuka klien e -mel pengguna dengan mesej baru, bersedia untuk dihantar. Berikut adalah contoh:
link.href = "mailto: example@example.com"; "Mailto: example@example.com". Kami kemudian menetapkan teks pautan, dan akhirnya masukkan pautan ke badan dokumen.
Atas ialah kandungan terperinci Hyperlink yang berguna dengan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!