Незаметный Javascript
лучшая практика должна добавить методы обработчика событий для ссылок.
Эти подтверждают () , функция производит диалоговое окно, которое Вы описали и возвращаете TRUE или FALSE в зависимости от выбора пользователя.
Методы обработчика событий для ссылок имеют специальное поведение, которое является, что они уничтожают действие ссылки, если они возвращают false.
var link = document.getElementById('confirmToFollow');
link.onclick = function () {
return confirm("Are you sure?");
};
, Если Вы хотите ссылку на [1 120], требуют javascript, HTML должен быть отредактирован. Удалите href:
<a href="#" id="confirmToFollow"...
можно явно установить место назначения ссылки в конечном счете обработчик:
var link = document.getElementById('confirmToFollow');
link.onclick = function () {
if( confirm("Are you sure?") ) {
window.location = "http://www.stackoverflow.com/";
}
return false;
};
, Если Вы хотите тот же метод, обратился к нескольким ссылкам, можно получить nodeList ссылок, которые Вы хотите и применяете метод к каждому, поскольку Вы циклично выполняетесь через nodeList:
var allLinks = document.getElementsByTagName('a');
for (var i=0; i < allLinks.length; i++) {
allLinks[i].onclick = function () {
return confirm("Are you sure?");
};
}
существуют дальнейшие перестановки той же идеи здесь, такие как использование имени класса для определения, какие ссылки прислушаются к методу, и передать уникальное местоположение в каждого на основе некоторых других критериев. Они - шесть из один, полдюжины из другого.
Альтернативные Подходы (не поощренные методы):
Один препятствовавшая практика должна присоединить метод через атрибут onclick :
<a href="mypage.html" onclick="...
Другой препятствовавшая практика должна установить атрибут href к вызову функции:
<a href="javascript: confirmLink() ...
Примечание, что эти нежелательные методы все работают решения.
Вот то, как мы делали его:
<a href="#" onClick="goThere(); return false;">Go to new page</a>`
function goThere()
{
if( confirm("Are you sure?") )
{
window.location.href="newPage.aspx";
}
}
(РЕДАКТИРОВАНИЕ: Код, переформатированный для предотвращения горизонтальной прокрутки)
<a href="http://..." onclick="return confirm('are you sure?')">text</a>
В jQuery это - что-то как:
$("a").click(function() {if(confirm('yadda yadda')) event.stopPropagation();});
, Если я понимаю то, что упомянул jgreep, если бы Вы только хотите, чтобы подтверждение появилось на нескольких ссылках, Вы связали бы обработчик щелчков только со ссылками с правильным классом. Вы могли сделать это только для привязок или для любого элемента HTML, который имеет класс.
$(".conf").click(function() {if(confirm('yadda yadda')) event.stopPropagation();});
При использовании jQuery, Вы сделали бы:
jQuery(document).ready(
jQuery("a").click(){
//you'd place here your extra logic
document.location.href = this.href;
}
);
Связывающая класс версия (никакая потребность во встроенных атрибутах onclick): свяжите этот внешний < сценарий> после всех подтверждаемых средств управления:
// dangerous - warnings on potentially harmful actions
// usage: add class="dangerous" to <a>, <input> or <button>
// Optionally add custom confirmation message to title attribute
function dangerous_bind() {
var lists= [
document.getElementsByTagName('input'),
document.getElementsByTagName('button'),
document.getElementsByTagName('a')
];
for (var listi= lists.length; listi-->0;) { var els= lists[listi];
for (var eli= els.length; eli-->0;) { var el= els[eli];
if (array_contains(el.className.split(' '), 'dangerous'))
el.onclick= dangerous_click;
}
}
}
function array_contains(a, x) {
for (var i= a.length; i-->0;)
if (a[i]==x) return true;
return false;
}
function dangerous_click() {
return confirm(this.title || 'Are you sure?');
}
dangerous_bind();
Это - немного многоречивое должное к продолжающей работать привязке, отправляет/застегивает также. Обычно, хотя имеет смысл иметь опции вЂdangerous’, Вы захотите подтвердить на кнопках, а не ссылках. ДОБЕРИТЕСЬ запросы, как запущено ссылками не должны действительно иметь никакого активного эффекта.
var links = document.getElementsByTagName('A');
for (var i = 0; i < links.length; i++)
{
links[i].onclick = function ()
{
return Confirm("Are you sure?");
}
}
Это применяет сообщение ко всем ссылкам, однако немного более трудно заставить ссылки не работать без JavaScript автоматически (на самом деле его невозможное).
Смотрите на What’s лучший способ открыть новое окно браузера . Можно сделать что-то подобное, но подбросить подтверждение до открытия нового окна.