searchURL: function() {
function insertAfter(newNode, referenceNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
var link, url, parser, newPathName = '',
emailUrl = /\/img\//,
newstr = '',
doc = document,
container,
container_id,
container_links,
container_images,
documentTableWrapper,
docBodyFirstChild,
nodeToTargetToInsertLP;
if (!doc.getElementById('container')) {
container = doc.createElement('div');
container.setAttribute('id', 'container');
container.className = 'container-avon-representative-news';
container_links = container.getElementsByTagName('a');
container_id = doc.getElementById('container');
docBodyFirstChild = doc.body.firstChild;
nodeToTargetToInsertLP = doc.getElementsByClassName('flexTile')[4];
if (nodeToTargetToInsertLP) {
documentTableWrapper = doc.getElementsByClassName('marginfix')[0];
container.appendChild(documentTableWrapper);
insertAfter(container, nodeToTargetToInsertLP);
} else {
documentTableWrapper = doc.getElementsByTagName('table')[0];
container.appendChild(documentTableWrapper);
doc.body.insertBefore(container, docBodyFirstChild);
}
} else {
container_links = doc.getElementById('container').getElementsByTagName('a');
}
container_images = container.getElementsByTagName('img');
for (var i = 0; i < container_images.length; i++) {
if (arguments[0] == "smo" || arguments[1] == "smodev") {
container_images[i].src = container_images[i].src.replace(emailUrl, '/images/dir_a/');
} else {
container_images[i].src = container_images[i].src.replace(emailUrl, '/static/images/dir_b/');
}
}
for (var i = 0, len = arguments.length; i < len; i++) {
url = getURL(arguments[i]);
for (var j = 0, jlen = container_links.length; j < jlen; j++) {
link = container_links[j];
if (link.href.indexOf(url) !== -1) {
parser = document.createElement('a');
parser.href = link.href;
link.setAttribute('target', '_self');
newPathName = parser.pathname;
if (newPathName.search(/Executive|District|Division|National/) != -1) {
newPathName = newPathName.split('/').pop();
newstr = newPathName;
} else {
newstr = newPathName;
}
link.href = newstr;
} else {
link.setAttribute('target', '_blank');
}
}
}
},
我有一个循环,它通过图像是div的孩子:
var container_images = container.getElementsByTagName('img'),
emailUrl = /\/img\//;
for (var i = 0; i < container_images.length; i++) {
if (arguments[0] == "smo" || arguments[1] == "smodev") {
container_images[i].src = container_images[i].src.replace(emailUrl, '/images/dir_a/');
} else {
container_images[i].src = container_images[i].src.replace(emailUrl, '/static/images/dir_b/');
}
}
奇怪的是,这是在一个实例(服务器的另一个区域)中工作,但在另一个实例中它添加了我甚至没有指出的其他路径名/目录?!
我认为replace
足够明确:
xxx.src.replace(emailUrl, '/images/dir_a/');
如果此image
代码的源属性设置为/\/img\//
,请将其替换为/images/dir_a/
有没有人知道一个更明确的方法,并且不会添加我没有指定的目录?
有人能用replace
方法解释这是怎么回事吗?
更新
为了给出一些背景我没有任何问题的环境如下:我的公司使用CMS来提供这些页面。文件扩展名为.page
;我从来没有听说过使用CMS以外的扩展,所以我认为它是CMS专有的。
无论如何,在CMS中,您还可以像从任何其他服务器那样提供服务器html
文件。但在这种情况下,当我检查开发工具中的来源时,似乎添加了<img src="http://xxx.xxx.com/REPSuite/static/html/inews_archives/static/images/dir_b/xxx.png">
而不是<img src="http://xxx.xxx.com/REPSuite/static/images/dir_b/xxx.png">
答案 0 :(得分:1)
问题是您使用的是.src
,并且您希望使用.getAttribute('src')
和.setAttribute('src', 'your new src')
。
HTMLImageElement.src
是反映src HTML的DOMString 属性,包含图像的完整URL,包括基URI。
所以当你拨打.src
时,它会给你完整的绝对当前uri。您只想获取/设置src属性。 working example jsbin
答案 1 :(得分:0)
答案结果很简单(当然事后)。无论如何 - 因为我在其他获取服务的环境中获得了那种时髦的路径 ,我只是做了一个检查 的条件 时髦的道路。
因此,我没有检查一个正则表达式,而是检查了两个。
var emailUrl = /img\//gi,
tsUrl = /\/REPSuite\/static\/html\/inews_archives\/img\//gi;
for (var i = 0; i < avon_rep_container_images.length; i++) {
if (arguments[0] == "smo" || arguments[1] == "smodev") { // Checks what environment the page will be used in so we can change the src attribute of all the images in the document to the appropriate path
avon_rep_container_images[i].src = avon_rep_container_images[i].src.replace(emailUrl, '/images/avon_manager_news/');
} else if(!nodeToTargetToInsertLP) {
avon_rep_container_images[i].src = avon_rep_container_images[i].src.replace(tsUrl, '/REPSuite/static/images/rep_news/');
} else {
avon_rep_container_images[i].src = avon_rep_container_images[i].src.replace(emailUrl, '/static/images/rep_news/');
}
}
感谢所有帮助过的人,我很感激!