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 回答