Игнорировать аттрибут target=_blank в IE6

al70

Есть IE6 и сайт с кучей ссылок с аттрибутом target=_blank. Необходимо сделать так, чтобы все эти ссылки открывались не в новом окне, а в текущем. Настройки можно проводить только на клиентской стороне, сайт изменить нельзя.
В гугле что-то прямого ответа на вопрос не нашел.

pitrik2

ну поставь уже себе оперу или фаерфокс и познай все прелести "практически чего угодно настраиваемости"

al70

Так это ж не для себя, тут задача очень специфичная.
В общем, как выяснилось, при использовании фреймов можно убрать аттрибут target средствами JS, но только если отображаемая во фрейме страничка лежит на той же машине.
var d = document.getElementsByTagName('a');
for (var i = d.length-1; i >= 0; i--)
{
if (d[i].getAttribute('target') == '_blank')
{
d[i].removeAttribute('target');
}
}

У меня случай тяжелее, копаю дальше. :)

artimon

Т.е. ты хочешь во фрейме открыть страничку с другого домена и что-то в ней поменять с помощью JS?

mkrec

смутное воспоминание, что средствами CSS2 можно было вешать скрипты через стили. в свою очередь, броузеры позволяют тебе вешать стили на чужие страницы.

stm4836248

Поставь http://files.myopera.com/Dragon/SoftWare_32/Ad%20Muncher... и сделай в его настройках замену текста
target="_blank"
на пустоту.

Save не забудь нажать!

al70

Был такой вариант, но он невозможен.

al70

Не прокатит.

al70

Только как крайний случай. Во-первых, он платный, а во-вторых — не хочется ставить лишнее ПО.

Fragaria

есть идея :)
Корпоративными политиками меняешь у всех клиентов файл etc/hosts, заменяя IP, относящийся к запрашиваемому URL, на IP своего сервера.
На своём сервере ставишь mod_rewrite и скрипт, который анализирует запрошенный URL, забирает оригинальный контент по этому URL с оригинального сервака, а потом парсит, убирает все target=_blank и отдаёт клиенту :grin: :grin: :grin:

al70

меняешь у всех них

Кто такие «они»? :)

Fragaria

Ну как я понял, тебе нужно сделать это, чтобы некоторые клиенты ("они") могли ходить на некоторый сайт, и чтобы при этом ссылки у "них" не открывались в новом окне. То есть этих самых клиентов - перечислимое конечное множество :) Тогда мой способ катит. Если же "клиенты" - это кто угодно и их ты никак не контролируешь, то косяк тогда.
PS я поправил свой сумбурный пост предыдущий, чтоб понятнее было.

kruzer25

Корпоративными политиками меняешь у всех клиентов файл etc/hosts, заменяя IP, относящийся к запрашиваемому URL, на IP своего сервера.
Допустим, запрашиваемые URL находятся на сайтах ***.narod.ru.
Что именно ты собираешься записать в хостс?

Fragaria

вроде очевидно, что я туда напишу

192.168.0.1 xxx.narod.ru

где 192.168.0.1 - мой сервер

al70

Ну ладно, пошутили — и хватит. У нас Windows, и все настройки нужно проводить только на локальной машине.

Fragaria

Так я про винду и говорил. Файл hosts в винде находится в папке C:\Windows\system32\Drivers\etc\
Там прописывается нужная строка.
На каком-нибудь серваке (опять же можно и на виндовом) в локалке поднимается апач, mod_rewrite и любой интерпретатор скриптовых языков, например PHP. Mod_rewrite принимает полный URL, запоминает его и передаёт в параметре скрипту на PHP. Скрипт лезет на оригинальный сервер (с помощью curl, например всасывает с него запрашиваемую страницу, парсит её, убирая target=_blank, и отдаёт клиенту. У клиента полное ощущение, что он ходит на оригинальный сервер, за небольшим исключением в виде слабо заметных тормозов и возможных проблем с сертификатами безопасности.

al70

Уу-у-у... Это задрочно слишком. Надо проще.

kruzer25

Нет, ты не понял.
xxx - любое.

Fragaria

Не придумывай искусственных ситуаций.

kruzer25

Искуственные ситуации придумываешь здесь ты.
заменяя IP, относящийся к запрашиваемому URL, на IP своего сервера.
С чего ты взял, что имя хоста точно определено?
А задать какой-то айпишник всем субдоменам какого-нибудь домена ты не сможешь.

Fragaria

С чего ты взял, что имя хоста точно определено?А задать какой-то айпишник всем субдоменам какого-нибудь домена ты не сможешь.
А с чего ты взял, что оно не определено?
Я вот в общих чертах знаю, в какой области работает крафт, и у меня есть определённое представление, в какой ситуации могло понадобится нечто подобное. Скорее всего, это какой-то терминал по типу банкомата или автомата оплаты, винда в embedded-версии, окно IE развёрнуто на весь экран, а сайт - некоторый сервис, которым пользуются клиенты, и притом сервис, скорее всего, сторонний, так как доступа к его коду нет.
А вот задача убрать все target=_blank с сайтов на narod.ru могла возникнуть только в твоём воспалённом мозгу.

kruzer25

ОК, забудь про narod.ru, что ты думаешь про ebay.com? ;)

Fragaria

Несмотря на то, что я всё равно не вижу ни одной задачи, где требовалось бы покрыть недетерминированное множество субдоменов одного домена и убрать со всех ссылок на них атрибут _target=blank,я всё же предложу решение этой странной задачи: поднимаем локальный DNS, который на все домены, кроме заданного, будет отдавать настоящие IP, а на поддомены определённного домена - выдавать один и тот же локальный IP. Указываем этот DNS у всех клиентов. Дальше всё так же, как я рассказал.

kruzer25

поднимаем локальный DNS, который на все домены, кроме заданного, будет отдавать настоящие IP, а на поддомены определённного домена - выдавать один и тот же локальный IP. Указываем этот DNS у всех клиентов
Ну вот видишь? Всё уже усложняется...
Кроме того, при таком поведении твои ошибки будут влиять не на косяки при загрузке страниц с *.ebay.com, а на возможность отображения каких-либо страниц вообще.
Пользователи потом будут спрашивать, какого хрена яндекс не работает - и что ты им будешь отвечать, что это для того, чтобы ebay работал?

Fragaria

Ты сначала предложи решение ХОТЬ КАКОЕ-НИБУДЬ (кроме, конечно же, Висты, IE7 и аддона к нему IE7Pro со включенными UserScripts а потом рассуждай про чужие косяки и прочее. А то придумал себе какую-то сказочную задачку, и сидит кряхтит, что её решить сложно, а если руки кривые, то и опасно.

al70

Ну ты прям экстрасенс! :)
Так и есть. Это нужно, чтобы окна случайно не пооткрывались. Типа, всё в одном полноэкранном окошке. А сервис и правда поменять нельзя, но не из-за кода, а из-за того, что он еще в куче мест используется.
Ну и, само собой, даже если бы и можно было его пропатчить, всё равно более правильно заложиться на случай появления на страницах таких ссылок, мало ли чего там понапишут.

Fragaria

Кстати, есть ещё метод: ставишь прокси с ContentFiltering и в нём режешь все таргеты, а потом во всех IE указываешь ходить через этот прокси.
Оставить комментарий
Имя или ник:
Комментарий: