开发者

Javascript find and replace outbound URLs

I need to create a javascript function that will find and replace all outbound links on my site. It will need to do the following:

Find all URLs that do not include 'mysite.com' in the url such as outbound links to anothersite.com

Replace the URLs with http://mysite.com/?redirect=anothersite.com

This sounds relatively straightforward... but I'm having issues.

Thanks in advance!

Here is an update with what I have so far to replace the URLs (which works):

<script type="text/javascript">
onload = function () {
    for (var i = 0; i < document.links.length; i++) document.links[i].hre开发者_如何转开发f = 'http://www.mysite.com/redirect.php?' + document.links[i].href
}
</script>

I've tried a few different ways of just getting it to target the outbound URLs using an IF statement, but to no avail.

<script type="text/javascript">
    onload = function () {
         for (var i = 0; i < document.links.length; i++) {
              if (document.links[i].href.indexOf("http://www.mysite.com") == -1) {
                 document.links[i].href = 'http://www.mysite.com/redirect.php?' + document.links[i].href
              }
         }
    }
</script>


Try something like this:

$('a').filter(function() { return this.hostname && this.hostname !== location.hostname; }).each(function(){
    $(this).attr("href","http://www.mysite.com?redirect="+$(this).attr("href"));
});

JSFiddle


Not sure how much this will help but this is how to track outbound links for Google Analytics, I'm sure it should work for your purpose if you modify it accordingly:

<script type=”text/javascript”>
if (document.getElementsByTagName) {
var ahrefs = document.getElementsByTagName(‘a’);
for (var i=0; i<ahrefs.length;i++) {
if (ahrefs[i].href.indexOf(‘http://www.jhuskisson.com‘) == -1 && !ahrefs[i].onclick) {
ahrefs[i].onclick = function () { var track = this.href + ”; urchinTracker (‘/outgoing/’+track.substring(7)); }
}
}
}
</script>

Source: http://www.jhuskisson.com/...


    var my_links = document.getElementsByTagName("a");
    for (var i=0;i<my_links.length;i++){
        if(my_links[i].href == <my site>){      
           my_links[i].href = location.replace(<whatever>);     
        }
    }

work with this (should be fine, didn't try it, i'm not sure about that my_links[i].href = location... ) and put it inside a document.ready function!


You could do this with jQuery.

$('a').filter(function(){
    if($(this).attr('href') != "http://www.mysite.com"){
        $(this).attr('href', 'http://mysite.com/?redirect=' + 
        $(this).attr('href'));
    }
});

http://jsfiddle.net/jasongennaro/XETqL/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜