2011-10-24 19 views
2

私のアプリケーションでは、ベースのタグ<base href="http://localhost/app/" />を使用しており、リンクには次のような相対パスが使用されています。<a href="news/page-1">some link</a>jQuery Mobile - 相対的なリンク - ベースタグのバグ

最初のページはチャームのように読み込まれますが、次のリクエストは間違ったURLを読み込もうとします(firebugでテスト済み)。

例:

ベース:http://localhost/app/

  • リンク1:ニュース
  • リンク2:約

最初の要求では、リンク1上で、正しいURLを取得し、 http://localhost/app/news

が、私は、リンク2をクリックした場合は、次の要求に応じて、jqueryの携帯電話には、次のURLをロードしようとします:http://localhost/app/news/about

この問題に対処する方法?

絶対URLは使用できません。

ありがとうございました。

答えて

0

これはバグのようです。

ここには修正があります。

Github - Fix for issue 613 - jqueryの携帯電話は、私はすべてのページの下部に、このスクリプトを入れて、jQueryの自体を使用して相対的なリンクを修正するために管理し、元の 'ベース' タグ

0

無視します:

<script type="text/javascript"><!-- 
var base = $('base').attr('href'); 
if(base) { 
    // Fix a tags with relative href 
    $('a[href]').filter(function() { 
    return ! /^(\w+:|\/)/.test($(this).attr('href')); 
    }).each(function() { 
    $(this).attr('href' , base + $(this).attr('href')); 
    }); 
} 
//--></script> 

基本的に以下を実行します:

  • テスト
  • 属性 'href'を持つすべての 'a'タグを選択
  • hrefが絶対URL( 'scheme:'または '/'で始まるタグ)を除外します。 )
  • 前に付加HREFにベースタグ、それは私のためにかなりうまくいった

それは絶対的な作り。

これは、スラッシュ(たとえば、'http://localhost/app/'など)で終わるベースのHREFでのみ機能することに注意してください。それ以外の場合は、ベース変数に対して余分なトリミングを実行する必要があります。

私はまだ画像のソースでこれを行う方法を理解しようとしています。同じテクニックを試してみると、imgsrcのURLが誤って絶対に変換されてからjQueryを使って修正できるようになります。誰かがトリックを見つけたら、私に知らせてください。一方、私は画像に絶対URLを使用しています...

関連する問題