1

「いくつかの」相対的なきれいなURLの場合にのみ、Jqueryで文字列を挿入するのが好きです。

挿入する必要がある文字列に、'/1' または '/2' または '/3' の値が含まれている

したがって、次のような URL:

<a href="/whatever"> becomes 
<a href="/1/whatever"> or <a href="/2/whatever"> etc.

しかし、次のような URL

<a href="/1/whatever"> or 
<a href="/2/whatever"> must keep unchanged

以下のすべての例は変更しないでください。

/whatever/whatever
/whatever/whatever/whatever

<img src="/img.png">
<img src="/whatever/img.png">
<img src="/whatever/whatever/img.png">
<img src="http://whatever.com/img.png">
<img src="http://whatever.com/whatever/img.png">

<a href="http://whatever.com></a>
<a href="http://whatever.com/whatever.whatever></a>
<a href="http://whatever.com/whatever/whatever.whatever></a>
4

3 に答える 3

1

こんにちは、次のコードを試してください:

$(document).ready(function(){
      $ ("a").each(function(){
         var url = $(this).attr("href"),
         count = (url.match(/\//g) || []).length;
         if(count == 1)
         {
             var cookieValue; //set your cookie value in this variable
             $(this).attr("href","/"+cookieValue + $(this).attr("href"));
         }
      });

      $ ("img").each(function(){
        var url = $(this).attr("src"),
            count = (url.match(/\//g) || []).length;
        if(count == 1)
        {
            var cookieValue; //set your cookie value in this variable
            $(this).attr("src","/" + cookieValue + $(this).attr("src"));
        }
    });
  });
于 2014-11-08T09:21:35.103 に答える
0

このようなものはうまくいくはずです、

$('a[href]').each(function (index, element) {
  var href = $(element).attr('href') || '';
  if (href.match(/^\//) && !href.match(/^\/\d+\//)) {
    // do whatever you do to decide what number to
    // prepend with. I'm just going to use 1 all the time
    $(element).attr('href', '/1' + href);
  }
});

フィドル

これは、すべての相対リンクが で始まることを前提としています/。そうでない場合は、正規表現を少し変更する必要があります。

href.match(/^\//)href が a で始まること/ !href.match(/^\/\d+\//)を確認/して/ください。

セレクターを使用して、属性a[href]を持つリンクのみを取得するようにしました。href今日ではあまり一般的ではありませんが、 aと noのaタグを持つことは可能です。namehref

とはいえ、この種のクライアント側の書き換えは使いたくないかもしれません。ユーザーが NoScript または他の同様のセキュリティ製品を実行している場合、XSS 攻撃の誤検出を引き起こす可能性があります。可能であれば、おそらくサーバー側で行う必要があります。

于 2014-11-08T09:56:49.593 に答える