2011-01-12 10 views
1

私はRailsのFirefoxでjavascript regexを使ってhrefを置き換えるには?

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

このトリックは、FirefoxとOperaのために(何もクリックで起こりません)ChromeとSafariのために動作しますが、失敗した上でjQueryのための次のコードを使用してWebページ上のいくつかのリンクを変更してみてください。コードに何が間違っていますか?

EDIT1:

Webページが含まれています:クリックで

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

を、ブラウザ(すなわち、FirefoxとOperaは)/ajax/subj1のAJAXリクエストを行う必要があります。

+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は '\'を '/'に修正します(少なくとも7年前にはチェックしていませんでした)。そして、おそらく '/'を '/'に畳んで正しい結果を得ます。 – Kobi

関連する問題