Итак, требуется средствами JS трансформировать ссылки HTML: <a href="http://mysite?key=value">link1</a> в ссылки HTML: <a href="http://mysite#key=value" onclick="AJAXRequest('','','key=value');">link1</a> Для решения поставленной был написан следующий код: [js] for (i = 0; i < links.length; i ++) { var tmp = links.href; var page_param = tmp.split('?'); links.onclick="AJAXRequest('','','"+page_param[1]+"');"; links.href = page_param[0] + "#" + page_param[1]; } [/js] Он справляется с своей задачей, но только в Opere. Затем был этот код переписан для дальнейшей совместимости: [js] for (i = 0; i < links.length; i ++) { var tmp = links.href; var page_param = tmp.split('?'); links.setAttribute("onclick", "AJAXRequest('','','"+page_param[1]+"');"); links.href = page_param[0] + "#" + page_param[1]; } [/js] Теперь работает в Opere и Firefox. Для ещё большей совместимости имеем такой вариант: [js] for (i = 0; i < links.length; i ++) { var tmp = links.href; var page_param = tmp.split('?'); links.setAttribute("onclick", function() {AJAXRequest('','',page_param[1]);}); links.href = page_param[0] + "#" + page_param[1]; } [/js] Теперь AJAXRequest вызывается во всех браузерах (Opera, Firefox, Internet Exproler), но в качестве параметра на всех ссылках идет, то что было в последней ссылке. Прошу помочь написать новый вариант кода, который бы работал во всех упомянутых браузерах. А вообще задача сейчас свелась к тому, чтобы в последнем варианте кода для каждой ссылке был свой вариант функции AJAXRequest.
[js]links.onclick=function () { AJAXRequest('','', page_param[1]); }[/js] Должно работать везде. Еще вариант: [js] if (navigator.userAgent.indexOf("MSIE") > 0) { //Если браузер ИЕ links.attachEvent('onclick', "AJAXRequest('','','"+page_param[1]+"');"); } else { //Другой браузер var event = document.createEvent("MouseEvents"); links.addEventListener("click", "AJAXRequest('','','"+page_param[1]+"');", false); } [/js] OnClick - это событие = метод объекта, а значит, к нему можно обращаться напрямую (либо через методы событий). "setAttribute" - говорит само за себя.