Poiché JavaScript gestisce l'evento click. Quando si fa clic, il seguente codice si chiama:
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);
}
}
})
Il onOpen
cambia manualmente il location
.
Edit: Per quanto riguarda il tuo commento ... Se è possibile modificare ImageMenu.js, si potrebbe aggiornare lo script che chiama onClose
passare l'oggetto a
elemento (this
, piuttosto che this.href
)
obj.options.onClose(this, i);
Poi l'aggiornamento dell'istanza ImageMenu, con la seguente onOpen
cambiamento:
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;
}
}
});
});
Ciò verificare la proprietà target dell'elemento per vedere se è _blank
e quindi chiamare window.open
, se trovato.
Se si preferisce non modificare ImageMenu.js, un'altra opzione potrebbe essere quella di modificare i collegamenti per identificarli nel gestore onOpen
. Di 'qualcosa di simile:
<a href="http://www.foracure.org.au/#_b=1" target="_blank" style="width: 105px;"></a>
Quindi, aggiornare il onOpen
chiamata a:
onOpen: function(e, i) {
if (e.indexOf('_b=1') > -1) {
window.open(e);
} else {
location = e;
}
}
L'unico aspetto negativo di questo è l'utente vede l'hash al passaggio del mouse.
Infine, se il numero di collegamenti che si intende aprire in una nuova finestra è basso, è possibile creare una mappa e confrontarla. Qualcosa di simile:
var linksThatOpenInANewWindow = {
'http://www.foracure.org.au': 1
};
onOpen: function(e, i) {
if (linksThatOpenInANewWindow[e] === 1) {
window.open(e);
} else {
location = e
}
}
L'unico inconveniente è la manutenzione, a seconda del numero di collegamenti ....
Altri hanno suggerito di modificare il link (usando #
o javascript:
) e l'aggiunta di un gestore di eventi in linea (onclick
) - Non lo consiglio a tutti come si rompe collegamenti quando JS è disattivato/non supportata.
Buona fortuna!
funziona per me come previsto, l'obiettivo viene aperto in una nuova scheda. – arkascha
Grazie @arkascha. Ho modificato la domanda per indicare che il problema si verifica in Chrome. – Steve
Sto usando un browser chromium. Per me va bene. Quindi a quanto pare è un effetto di qualunque cosa google aggiunga al bel browser chromium per la sua versione cromata. – arkascha