domain1
私はajax 呼び出しを使用して、いくつかのタグを含む HTML フラグメントを取得するページをホストしています。これらのタグには相対src
URL があり、これらのタグに対してのみ、別のドメインを指すベース 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/Image1
http://domain2/relativepath/To/Image1
images[image].src = 'http://domain2'+ images[image].getAttribute('src');
src
では、属性を変更する別の方法はありますか? (または、ベース URL をローカルに設定するには)