Интереса ради написал такой скриптик:
(function() {
document.addEventListener('DOMContentLoaded',function(){
for (var i=0; i<document.links.length; i++) {
if (document.links[i].target=="_blank") {
document.links[i].target="_self";
}
}
},false);
}) ()
но пока писал, опера зависла пару раз от него %=))))
Так что наверное в Опере лучше не трогать свойство target у ссылок.
Скорее лучше надо не трогать коллекции links и images, так как они не являются стандартом. Тот же add-alt-text.js
по-моему, именно из-за этого глючит.
Не знаю, мне не удивительно что Опера грохается от такого кода. Посмотри на
removeblank.js:
document.addEventListener('load',function(ev){
var d = document.getElementsByTagName('a');
for (var i = d.length-1; i > -1; i--) {
if (d[i].getAttribute('target') == "_blank") {
d[i].removeAttribute('target');
}
}
},false);
Не зря тут цикл идёт наоборот. Дело в том что как страничные скрипты, так и UserJS могут изменить (и изменяют) макет, в том числе и создавая новые ссылки (или картинки, если про images). И что может произойти в цикле который крутится по расширяемому в процессе списку ссылок никто не знает. Правда и это не спасает от падения в 9-ке. Но в приципе можно попробовать сделать:
а) Вместо цикла for сделать цикл while (хотя навряд ли будет разница).
б) Наладить
DOM-итератор с фильтром a[target='_blank'].
в) Пустить XPath-запрос, при этом результаты его можно попробовать "заморозить" (если я ничего не напутал, мельком проглядывая
спецификацию...), чтобы изменения в макете его не затрагивали.
А теперь, после того как я вас слегка подмариновал, прочитав ажно целую лекцию... Барабаны: тр-р-р-р-р-р! Решение в студию!..
a[href][target='_blank'] {-o-link:attr(href) !important; -o-link-source:current !important;}
Хе-хе. Проверьте как оно работает. В моей рабочей 8-ке не работает, впрочем, мне всё равно этот скрипт (теперь уже стиль) не нужен.
Но всё таки надо допроверить, так как '-o-link' как ни крути, тоже нифига не стандарт, и никто ничего не гарантирует.