Замена ссылок на странице на основе location.хост и файл cookie

#javascript #jquery

#javascript #jquery

Вопрос:

Я использую jquery для перезаписи списка ссылок на странице. Если местоположение.хост НЕ является местоположением поставщика.хост И файл cookie не имеют определенного значения, затем он находит ссылки и переписывает их в альтернативные значения. Код, который я использую, отлично работает в FF, но не в IE7. Пожалуйста, помогите!

 <script type="text/javascript"> 
    // link hider       
    var hostadd = location.host;
    var vendor = '172.29.132.34';
    var localaccess = 'internal.na.internal.com';
    var unlock = 'http://internal.na.internal.com/Learning/Customer_Care/navigation/newhire.html';



    // link rewriter                            
    $(document).ready (
        function style_switcher(){ 
            //if not a vendor or not accessing from lms reroute user to lms
            if (hostadd != vendor amp;amp; $.cookie("unlockCookie") != unlock){
                var linkData = {
                "https://www.somesite.com":             "https://internalsite.com/something",'../Compliance/something/index.html':'../somethingelse.html'

            };
            $("a").each(function() {
                 var link = this.getAttribute("href");  // use getAttribute to get what was actualy in the page, perhaps not fully qualified
                if (linkData[link]) {
                this.href = linkData[link];
            }
            });
        }
    });     
</script>
 

Комментарии:

1. Что именно не работает? Вы получаете сообщение об ошибке и пытались ли вы использовать точки останова, чтобы увидеть, где происходит сбой?

2. Я не знаком с breakpoints…so нет, я их еще не пробовал. Я не получаю error…it просто не переписывает ссылки.

Ответ №1:

Что вы могли бы сделать, если вы вставляете динамические ссылки, так это сохранить их в атрибуте данных, таком как data-orglink=»yourlink», который не будет преобразован браузером, затем проверьте это — и если он находится в массиве объектов — измените ссылку на href. У вас есть доступ к созданию атрибута данных?


У IE7 есть проблемы с внутренними ссылками, потому что он помещает информацию о хосте, прежде чем JS сможет перейти по ссылке..

http://jsfiddle.net/Cvj8C/9/

Будет работать во всех, кроме IE7. Поэтому вам нужно использовать полные пути, если использовать JS для этой функции: (


У вас были некоторые ошибки в вашем JS.

Но, похоже, все работает нормально?

Смотрите: http://jsfiddle.net/s4XmP /

или я что-то упускаю? 🙂

Комментарии:

1. на самом деле, когда я открываю ваш jsfiddle в IE7, он тоже не работает. привет, все еще маршруты к somesite.com

2. Его на if (linkData[link]) происходит сбой.. Что это должно делать? 🙂

3. он должен просматривать все ссылки на странице, чтобы найти совпадения … если он находит совпадение, он заменяет его альтернативным URL.