3

アプリケーションの魔女に取り組んでいる私は、別の Web サイトからコンテンツを取得します。取得したコンテンツには、内部リンクが含まれている場合があります。http://www.olddomain.comをこれらのリンクの href 値に追加して、アプリケーションで引き続き機能することを確認する必要があります。

データは変数にあります: テキスト

可変テキストには次が含まれます。

<p style="text-align: right;">
    Lots of text in here, with all kind of html tags, <br /><br /> 
    when suddenly a link appears:
    <a href="/niceinternalpage.html">Here!</a>
</p>

私が必要とする出力:

<p style="text-align: right;">
    Lots of text in here, with all kind of html tags, <br /><br /> 
    when suddenly a link appears:
    <a href="www.olddomain.com/niceinternalpage.html">Here!</a>
</p>

前もって感謝します!

4

5 に答える 5

2

最新のブラウザーでこの操作を実行するために jQuery は必要ありません。ページ上のdocument.getElementsByTagNameすべてのaタグを取得するために利用できます。

// document.getElementsByTagName returns a `NodeList` - it looks like an `Array`
// but lacks all of the methods; so we use `Array.prototype.slice` to turn it
// into a 'real' `Array` so we can filter and loop over it.
aTags = Array.prototype.slice.call(document.getElementsByTagName("a")),
    externalUrl = "http://www.olddomain.com";

// Make use of `filter` to return an Array of all `a` tags whose `href` attribute
// is unqualified (eg: does not start with `http`, again you may wish to make this
// filtering logic more complex).
//
// We then chain a `forEach` call to the result of the `filter` call which prepends
// the `externalUrl` to the `a` tag's `href` attribute.
aTags
    .filter(function (aTag) { 
        return aTag.href.match(/^http/) === null;
    })
    .forEach(function(unqualifiedATag) { 
        var unqualifiedUrl = unqualifiedATag.href;

        // Add a leading forward slash.
        if (unqualifiedUrl.charAt(0) !== "/") {
            unqualifiedUrl = "/" + unqualifiedUrl;
        }

        // Update the aTag's href attribute to fully qualify it.
        unqualifiedATag.href = externalUrl + unqualifiedATag.href;
    }); 
于 2013-03-23T15:48:06.387 に答える
1

attr()を使用して、値の変更を割り当てることができますhref

ライブデモ

$(variable).find('a').attr('href', function(idx, attrValue){ 
   return 'http://www.olddomain.com' + attrValue;
});
于 2013-03-23T15:46:02.803 に答える
0
var uri = $('a').attr('href');
$('a').attr('href', 'www.olddomain.com' + uri);

それが役に立てば幸い。

于 2013-03-23T15:45:42.770 に答える
0

内部リンクと外部リンクの両方がある場合は、次のように正規表現の置換を試すことができます。

$('a').each(function() {
    this.href = this.href.replace(/^\/(.*)/, 'http://www.externaldomain.com/$1');
});
于 2013-03-23T15:50:44.443 に答える
0

次のように実行できます。

var $content = $(text);
$content.find('a').each(function() {
   $(this).attr('href', 'http://www.olddomain.com' + $(this).attr('href') );
});
$content.insertAfter('#elementinyourpage');

変更したコンテンツを現在のページに挿入するための呼び出しも追加しました。

于 2013-03-23T15:44:34.173 に答える