2011-01-12 2 views
1

я пытаюсь изменить некоторые ссылки на веб-страницы, используя следующий код JQuery на RailsКак заменить href с помощью javascript regex в Firefox?

$(function() { 
    $('#lesson a').live('click', function() { 
    $.getScript(this.href.replace(/^(http...[^\/]+)?\/+(.*)$/,'/ajax/\\$2')); 
    return false; 
    }); 
}) 

Этот трюк работает для Chrome и Safari, но не может (ничего не происходит по щелчку) для Firefox и Opera. Что может быть неправильным с кодом?

EDIT1:

Веб-страница содержит:

<div id="lesson"> 
    <a href="/subj1">Subject 1</a> 
    ... 
</div> 

По щелчку, браузер (например Firefox и Opera), должны сделать Ajax-запрос /ajax/subj1.

+0

Можете ли вы включить источник HTML-страницы примера? – orangepips

+0

@orangepips, просто сделал это. Пожалуйста, ознакомьтесь с обновленным вопросом. – Andrei

+2

Каким образом это не удается? Какие ошибки вы получаете? – lonesomeday

ответ

2

Вы заменяете строку '/ajax/\\$2'.
У вас есть дополнительная обратная косая черта - если вы ожидаете результатов /ajax/subj1, используйте '/ajax/$2'.

+0

спасибо! Я неправильно понял, как одно относится к регулярному выражению в javascript. Интересно, что он работал для некоторых браузеров. – Andrei

+1

@Andrei - без проблем! Иногда вы что-то пишете, а затем ослепляете его - даже если это правильно на вашем лице ':)'. Некоторые браузеры очень прощающие - они исправляют URL-адреса и даже html, предполагая, что пользователь его обманул. Например, http: /google.com будет работать в большинстве браузеров, хотя это не действительный URL-адрес. IE auto исправляет '\' на '/' (или, по крайней мере, 7 лет назад - не проверял с тех пор) и, вероятно, сворачивает '//' на '/', давая правильный результат. – Kobi

Смежные вопросы