1

domain1私はajax 呼び出しを使用して、いくつかのタグを含む HTML フラグメントを取得するページをホストしています。これらのタグには相対srcURL があり、これらのタグに対してのみ、別のドメインを指すベース URL を設定したいと考えていますdomain2

例を次に示しHTMLDataます。次の値を持つ文字列があります。

'<p> Foo </p> \
<img alt = "Image 1" src = "/relativepath/To/Image1"> \
<div class = "someDiv"> \
    <img alt = "Image 2" src = "/relativepath/To/Image2"> \
</div>'

私のページに次のようなものを追加したい:

'<p> Foo </p> \
<img alt = "Image 1" src = "http://domain2/relativepath/To/Image1"> \
<div class = "someDiv"> \
    <img alt = "Image 2" src = "http://domain2/relativepath/To/Image2"> \
</div>'

もちろん、フラグメントの正確な構造はわかりません。おそらく、他の埋め込みオブジェクト タグに拡張したいと思うでしょう。

これまでに書いたものは次のとおりです。

function setBaseURLandConstructDiv (HTMLData) {
    var container = document.createElement("div");
    container.innerHTML = HTMLData;
    var images = container.getElementsByTagName("img");
    for (var image = 0;image<images.length;image++) {
        if (images[image].src) {
            images[image].src = 'http://domain2'+ images[image].getAttribute('src');
        }
    }
    return container.innerHTML;
}

それは機能しますが、私には正しくないようです。特に、 の行で、ブラウザは への(正しい)呼び出しを行う前に、 にcontainer.innerHTML = HTMLData不必要なリクエストを行います。 http://domain1/relativepath/To/Image1http://domain2/relativepath/To/Image1images[image].src = 'http://domain2'+ images[image].getAttribute('src');

srcでは、属性を変更する別の方法はありますか? (または、ベース URL をローカルに設定するには)

4

1 に答える 1

0

HTMLData を使用して配列の画像を取得するとどうなりますか? 最初に HTMLData を変更してから、コンテナに割り当てることができます。

于 2013-07-15T15:25:18.597 に答える