Ответ 1
Поскольку JavaScript обрабатывает событие click. Когда вы нажимаете, вызывается следующий код:
el.addEvent('click', function(e){
if(obj.options.onOpen){
new Event(e).stop();
if(obj.options.open == i){
obj.options.open = null;
obj.options.onClose(this.href, i);
}else{
obj.options.open = i;
obj.options.onOpen(this.href, i);
}
}
})
onOpen
вручную изменяет location
.
Изменить: Что касается вашего комментария...
Если вы можете изменить ImageMenu.js, вы можете обновить script, который вызывает onClose
, чтобы передать объект элемента a
(this
, а не this.href
)
obj.options.onClose(this, i);
Затем обновите экземпляр ImageMenu со следующим изменением onOpen
:
window.addEvent('domready', function(){
var myMenu = new ImageMenu($$('#imageMenu a'), {
openWidth: 310,
border: 2,
onOpen: function(e, i) {
if (e.target === '_blank') {
window.open(e.href);
} else {
location = e.href;
}
}
});
});
Это проверит свойство target элемента, чтобы увидеть, если оно _blank
, а затем вызовите window.open
, если он найден.
Если вы не хотите изменять ImageMenu.js, другой вариант - изменить ваши ссылки, чтобы идентифицировать их в вашем обработчике onOpen
. Скажите что-то вроде:
<a href="http://www.foracure.org.au/#_b=1" target="_blank" style="width: 105px;"></a>
Затем обновите свой вызов onOpen
, чтобы:
onOpen: function(e, i) {
if (e.indexOf('_b=1') > -1) {
window.open(e);
} else {
location = e;
}
}
Единственным недостатком этого является то, что пользователь видит хэш при наведении.
Наконец, если количество ссылок, которые вы планируете открыть в новом окне, будет низким, вы можете создать карту и проверить ее. Что-то вроде:
var linksThatOpenInANewWindow = {
'http://www.foracure.org.au': 1
};
onOpen: function(e, i) {
if (linksThatOpenInANewWindow[e] === 1) {
window.open(e);
} else {
location = e
}
}
Единственный недостаток - это обслуживание, в зависимости от количества ссылок....
Другие предложили изменить ссылку (используя #
или javascript:
) и добавить обработчик события inline (onclick
). Я не рекомендую это вообще, поскольку он прерывает ссылки, когда JS отключен/не поддерживается.
Удачи!