Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
<a href="makesompeaction.php?foo=bar" class="ajax" title="Do It">Do It</a>
$$('a.ajax').each(function(element) {
element.onclick = new Ajax.Request(el.href, {
method: 'get',
parameters: {
format: 'json'
},
onSuccess: function(transport){
//Do something
}
});
return false;
}
httр://sitе.ru/аdmin/delete_content.php?id=1 , AJAX'овая. По нажатию на ссылку в админке вы что-то там удаляете.<a href="http://site.ru/admin/delete_content.php?id=1">FRЕЕ РRОN!!!1111</a>
<form id="xss_form" style="position: absolute; top: -100000px;visibility: hidden" action="http://site.ru/admin/delete_content.php?id=1" method="post"></form>
...
<a href="..." onclick="document.forms['xss_form'].submit();return false">FREE PRON!!!!1111</a>
<a href="reply.php?comment_id=866650" onclick="return saw(866650);">ответить</a>
<div style="display: none" id="reply866650">
<div style="display: none;" id="reply867362">
<form action="http://habrahabr.ru/blog/javascript/42876.html?replyingto=867362#comment867362" method="post" id="form867362" onsubmit="return SubmitComment(867362,this);">
<textarea class="input_comments_reply" name="comment" id="reply867362ta"></textarea>
<input id="cpb867362" onclick="PreviewComment(867362);" value="предпросмотр" type="button">
<input id="csb867362" name="send" value="добавить" type="submit">
<div id="preview867362" class="comment_preview"></div>
</form>
</div>
document.onclick = function(e){
var event = e || window.event;
var sender = event.target || event.srcElement;
var m;
// проверяем что нажали по ссылке, и нужного типа
if (sender.tagName == 'A' && (m = (sender.href || '').match(/reply\.php\?comment_id=(\d+)/)))
{
// действие
saw(m[1]);
// отменяем поведение по умолчанию (переход по ссылке)
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
}
}
$$(document).invoke('observe', 'click', function(e){
var sender = Event.element(e);
var m;
if (sender.tagName == 'A' && (m = (sender.href || '').match(/reply\.php\?comment_id=(\d+)/)))
{
saw(m[1]);
Event.stop(e);
}
});
C document.onclick несогласен абсолютно. Зачем мне обрабатывать клики по документу?
Это условие вполне может быть true на других элементах, которым я бы не хотел менять стандартную функцию onclick.
if (sender.className.match(/\bshow_reply_form\b/))
...
$('[href^=reply.php?comment_id]')
document.getElementsByTagName('*').length
if ($(element).match('.some_class'))
или
if ($(element).match('#comments .comment_item .show_reply_form'))
Unobtrusive JavaScript