Чому - a href - javascript
Чому погано
Зараз відомо, що не слід використовувати псевдо-протокол javascript: , тобто писати:
Чому це погано і які аналоги слід використовувати?
Причина 1. Ідеологічна причина
Псевдо-протокол javascript: давно застарів. Він підтримується браузерами, але не описується у веб-стандартах.
Втім, з іншого боку, на використанні JavaScript: побудовано низку цікавих технологій, наприклад букмарклети.
Причина 2. Відсутність деградації
Якщо це можливо, краще зробити такий варіант:
Ті відвідувачі, у яких JavaScript відключено, пройдуть за посиланням на /openComment.php?id=123 і побачать там щось корисне.
Пошуковики також проіндексують /openCommend.php?id=123.
При натисканні на таке посилання з відключеним JavaScript, людину кине на початок сторінки. Немає гуд. Але якийсь href має бути. Тому краще зробити так:
Сторінка /nojs.html може, наприклад, містити прохання включити JavaScript.
Причина 3. Недоліки інтеграції
Властивістю onclick набагато зручніше управляти з JavaScript. Воно ставить обробник події. Можна робити кілька обробників, призначити функцію а не рядок як href , і т.п.
А псевдо-протокол JavaScript: - не подія. Він випадає із загальної схеми і тому незручний.
P.S Строго кажучи, і onclick всередині HTML не слід вказувати. Окремо повинні йти розмітка та JavaScript-код. Але іноді onclick - це зручно, так чому ж ні.
Причина 4. Негативне юзабіліті
Дуже часто використовують скрипт у посиланні, коли на кліку потрібно відкрити картинку або опис продукту.
Позитивне застосування?
Якщо все ж таки хочеться, щоб по кліку на посилання у відвідувача з відключеним javascriptнічого не трапилося:
Чи може це бути корисним у реальному житті?
Сам не використовую, але іншого способу зробити посилання неробочим для відвідувачів без JS не знаю.
принципово відрізняється від
Позитивне застосування - у тому, що такий href при відключеному js просто нічого не робить. І при цьому не кидає того, хто клікнув на початок сторінки як .
А от якщо: "javascript://"?
Найкраще asdfasdf І нічого не станеться нікуди не кине і спрацює тільки при включеному JS
Можна скористатися і такими способами: print();
на відміну від #blabla зручно тим, що в рядку статусу видно не http://. повний шлях сторінки. #blabla ,а короткий напис javascript:blablabla це одне із застосувань, якщо посилання js сам і створює
Ще зручний у читанні коду, хоча й виходить код мінія поворотливий. там де використовується подібний onclick виявилося проше розібратися в коді ніж де події вішаються в глибині коду, що і ускладнює вивчення.
а мені ось нафіг не потрібно щоб хтось там.. колупавсярозбирався/читав в моєму коді! де і що лежить, і як все влаштовано, це моя справа, і я сам знаю де що! Головне, працює ... ось і добре!
ідіот. тоді й шаблони проектування непотрібні. і спагетті код тоді на вашу рулит.
правильно писати: javascript:void(0 )
прочитав. нічого не зрозумів. у чому відмінності.
піду ще раз прочитаю.
Поясніть зеленому, якщо Javascript відключений, то за посиланням потрібно перейти на іншу сторінку, а якщо увімкнено, то повинен запуститися "AJAX" запит і підвантажитися нові дані. Як краще це реалізовувати?
Ти статтю щось прочитав? Там є приклад -
У href поміщаєш посилання на сторінку при вимкненому javascript, а в onclick - функцію, що викликає твійзапит.
я іноді пишу пишу href="javascript:;"
href="javascript:;" а тепер запусти це диво на ІЕ7
ну я практично завжди пишу так, і працює скрізь, ну, принаймні, у мене у всіх браузерах.
Якщо я нічого не плутаю. в IE все одно викликає артефакти, пов'язані з переходом у стан "очікування завантаження" - зокрема, вбиває gif-анімацію, динамічні ефекти з картинками (роловери) тощо. На Вінграді була пара тим, де народ реально наступав на ці граблі. Так що я б не радив так робити неробочі без JS посилання, краще, імхо, щось на зразок
Або навішувати href-и динамічно по завантаженню DOM-а.
А для прикладу осмисленого застосування javascript:-протоколу (крім букмарклетів), я б швидше навів це.
Напевно, багатьом буде цікаво дізнатися більше про Букмарклети, я зібрав посилання найбільш змістовні з цієї теми:
дякую допомогло позбутися #
А якщо не писати взагалі href="", а просто
Якщо прописати в css щоб змінювався курсор та колір то буде
Якщо ви не хочете, щоб без яваскрипту людина кудись ішла, навіщо використовувати
Якщо яваскрипт включений - при кліку подія і на діві пройде, якщо ні - у нас не буде посилання, а буде див, оформлений під посилання. На мою думку, найбільш логічний варіант
попередній пост мій, тут виправлена версія
PS. соррі попередній мій пост некоректно вийшов.
Якщо на засланні немає урла, то пошукачам на це посилання насрати, вони його ігнорують, або говоріть правильно, або не пудріть людям мозок
Цілком згоден, тут людина ховати псевдо протокол зібрався, оскільки не розуміє, що комусь вона потрібна. а вони такі балаканини з такої дрібниці розвели. Начебто когось із них хоч раз хтосьчерез це поддр.
А взагалі немає заслання, немає проблеми.
Немає сайту - немає проблеми, імхо)
Але без цього протоколу іноді обійтись досить важко. Як, наприклад, мені з дельфи змуситиTWebBrowserвиконати якийсь яваскрипт безNavigate('javascript.')? Якщо знаєте найкращі варіанти, поділіться, будь ласка.
Точно точно! Особливо якщо треба, щоб на сторінці щось відбувалося за подій, що відбуваються в програмі, а не на сторінці! Рано ховають цю технологію… Втім, як і багато інших!
Спробуймо:) Зрозуміло, навіщо в останній інструкції потрібен оператор void?
А оскільки псевдопротокол відноситься до об'єкта location, то і це буде посилатися на window. Дуже зручно, чи не так?)
Це завжди посилається на window, якщо не задано примусово.
угу, схоже що якщо необхідно використовувати саме А, найзручніше створювати додатково поруч якір, пасибо за ідею
Якоря ніколи не застаріють Як і , .
У когось застаріла, а у когось нормально і стабільно працює. Автору заборонити використовувати псевдо протокол і нам, всім іншим халява)
А що Вам заважає використати такий варіант?
а в бекенді зробити такий же обробник:
Мені здається, це найбільш правильний з усіх варіантів. При такому використанні досягається максимум поділу та максимум валідності. 1) HTML містить тільки HTML 2) JS лінкується окремо в і можливо в або будь-що на ваш розсуд, що буде його запускати. В результаті ми отримуємо практично відсутній inline-js. 3) Так само робиться і CSS. 4) Бекенд частина з радістю зробить ряд функцій, за Вас дозволяючи не використовувати подібні "забруднюючі" конструкції у Html: document.write. etc
Мені здається,подібний підхід найбільше полегшує життя при web-розробці.
. 2) JS лінкується окремо в " " і можливо в або . . 4) .
Стріп тег.
2) JS лінкується окремо в " " і можливо в " " або .
Так я щось не зрозумів.. якщо javascript: це погано.. чому тоді добре використовувати? javascript:void(0) ? і чому він працює при відключеному js?
По-моєму найкращий варіант. a href="/reg.php" Зареєструватися/a
Що ж це означає в теорії? Код взято з nigma.ru. Тут згадували про таку форму - зі слешами але так і не пояснили різницю між варіантами.
a href="javascript://" >скинути
Не використовуйте onclick – у великих проектах це може призвести до каші. Існують евенти. Вони були створені спеціально для цього. Використовуйте void(0) і забіть на користувачів, у яких вимкнено JS. Повірте, якщо ваш сайт цікавий, ви нічого не втратите.
Ілля, думаю що варто додати про це до статті
А про flash. Там взагалі fscommand є цілий інтерфейс для роботи зі сторінкою.
навіщо пишетьсяreturn false; в onclick?
Як на мене краще так:
"#send_message" краще писати, ніж "#" з двох причин: 1. користувач може побачити в статусі цю підказку і краще зрозуміти що робить ця кнопка 2. при помилці браузер не кине угору сторінки
Не знаю, чи йшлося тут, я не помітив. Ще одна причина, щоб так робити – це приховування від показу на window.status тексту посилання, тому що вони бувають дуже непривабливими, як у моєму випадку, коли самі посилання генеруються скриптом і мають багато різних параметрів.
Привіт всім! У мене тут затик з використанням link в ІЕ7 саме тоді коли сторінка завантажена за протоколом https://
Загаломпри кліку вилазить помилка. Може хто підкаже що юзати. # не пропонувати
Всім дякую заздалегідь.
А як прив'язати подію до дії користувача, коли він натискає на посиланні праву кнопку миші та вибирає "відкрити в новій вкладці"?
Підтримую lnked. Якщо з якоїсь причини не вдалося виконати функцію (логічна помилка), просто повертаємо return true. А на сторінці, на яку перенаправило користувача, вже пишемо помилку.
Так. багато копій зламали! А можна просто:
Порожній href перезавантажує сторінку, тягне.
З андроїда це все можна робити? На одному сайті бачив як таке посилання писав Аднін, але воно у нього не вийшло) залишився тільки текст. Захотілося навчитися самому
А чи варто дбати про користувачів, у яких вимкнено JS?
Вітання!! у мене кудись зникла можливість включити/відключити javascript у фаєрфоксі. Раніше натискала налаштування-налаштування і тут можна було поставити або прибрати галочку. Тепер цього немає коли заходжу в налаштування. Що робити, будь ласка, скажіть?
Прибрали цю можливість у firefox. Зробити можна через about:config, а вам це треба?