2017-08-26 48 views
0

如果有人从iOS调用页面,我尝试替换href。问题在于JavaScript不会仅替换搜索到的文本,而是替换所有的初始链接。例如:如何仅通过替换一些文本来更改href标记

<a href="http://example.com" class='dynamicLink'>test</a> 

当iOS手机或平板电脑在这个环节

<a href="http://ios+example.com" class='dynamicLink'>test</a> 

但JavaScript的改变取代所有

<a href="http://ios+" class='dynamicLink'>test</a> 

没有人知道问题

window.onload = function changeLinks() { 
    var href = "http://ios+" 
    var links = 
     document.getElementsByClassName('dynamicLink'); 
    if (navigator.userAgent.match(/Android/i) || 
     navigator.userAgent.match(/webOS/i) || 
     navigator.userAgent.match(/iPhone/i) || 
     navigator.userAgent.match(/iPad/i) || 
     navigator.userAgent.match(/iPod/i) || 
     navigator.userAgent.match(/BlackBerry/i) || 
     navigator.userAgent.match(/Windows Phone/i) 
    ) { 
     for (var i = 0; i < links.length; i++) { 
      links[i].href = href.replace('http://', "http://ios+"); 
     } 
    } else { 
     for (var i = 0; i < links.length; i++) { 
      links[i].href = href.replace('http://', "http://"); 
     } 
    } 
} 
+0

目前尚不清楚对我有什么做你期待的代码做...抱歉,但解释相当混乱 – Alessio

回答

2

您正在使用href.replace(...更换链接,但href以上为var href = "http://ios+"

用这种方式尝试定义:

for (var i = 0; i < links.length; i++) { 
    links[i].href = links[i].href.replace('http://',"http://ios+"); 
    } 

甚至这一点,实际使用此href

for (var i = 0; i < links.length; i++) { 
    links[i].href = links[i].href.replace('http://', href); 
    } 
+0

上帝保佑你非常感谢你,我不知道问题出在哪里 – d00nn1234