Jika saya menetapkan href
elemen ke javascript:void(0);
(sebagai lawan dari #
), seperti ini:
$('#foobar').attr("href", "javascript:void(0);");
JSHint mengambil konstruksi javascript:void(0);
sebagai URL Skrip:
PS C:\Users\hal9000\Development\strugee.github.com> grunt lint
Running "jshint:all" (jshint) task
js\main.js
30 | $('#lightbulb-icon').attr("href", "javascript:void(0);");
^ Script URL.
>> 1 error in 4 files
padahal sebenarnya itu tidak melakukan apa-apa dan valid secara semantik. Seharusnya ada pengecualian untuk jenis URL Skrip ini.
Mungkin ini harus menjadi peringatan khusus? Saya tidak bisa menjadi satu-satunya yang bingung dengan ini.
Kamu bukan.
Letakkan saja baris ini di bagian atas file Anda untuk menonaktifkan peringatan:
/*jshint scripturl:true*/
Tetapi cara terbaik adalah menggunakan "#" ke dalam href dan mengembalikan "false" untuk semua acara javascript:
<a href="#" onclick="doSomething();return false;">my link</a>
Tidak, cara terbaik adalah menjauhkan JavaScript dari markup dan atribut Anda :P
@rwaldron : perbaikan, memang
$('#foobar').attr("href", "#").click(function() {
// do it
});
Melewati jslint:
$('#foobar').attr('href','javascript'+String.fromCharCode(58)+'void(0);');
@MikeGodin terlihat seperti bug yang terpisah.
@kcampion menempatkan # dan mengembalikan false tidak selalu sesuai keinginan
dalam kasus saya, saya tidak ingin hash muncul
Komentar yang paling membantu
Letakkan saja baris ini di bagian atas file Anda untuk menonaktifkan peringatan:
Tetapi cara terbaik adalah menggunakan "#" ke dalam href dan mengembalikan "false" untuk semua acara javascript: