我在domain1上托管了一个页面,可以通过ajax调用从其中检索包含一些标签的HTML片段。这些标记具有相对的src URL,我只想为这些标记设置指向另一个域(例如domain2)的基本URL。

这是一个示例:我有一个具有以下值的String 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行对(cc)进行(正确)调用之前,对http://domain2/relativepath/To/Image1进行不必要的请求。

那么还有另一种修改images[image].src = 'http://domain2'+ images[image].getAttribute('src');属性的方法吗? (或在本地设置基本网址)

最佳答案

使用HTMLData获取数组图像时会发生什么?
您可以先更改HTMLData,然后将其分配给容器。

09-17 10:25