Da JavaScript, um das Click-Ereignis verarbeitet. Wenn Sie klicken, wird der folgende Code genannt:
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);
}
}
})
Die onOpen
manuell location
ändert.
Edit: In Bezug auf Ihren Kommentar ... Wenn Sie ImageMenu.js ändern können, können Sie das Skript aktualisieren, die onClose
das a
Element Objekt zu übergeben ruft (this
, anstatt this.href
)
obj.options.onClose(this, i);
Dann aktualisieren Sie Ihre ImageMenu Instanz mit folgenden onOpen
Änderung:
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;
}
}
});
});
Dies ist für die Zieleigenschaft des Elements überprüfen würde um zu sehen, ob es _blank
ist, und rufen Sie dann window.open
, wenn gefunden. Wenn Sie es vorziehen, ImageMenu.js nicht zu ändern, können Sie Ihre Links ändern, um sie in Ihrem Handler onOpen
zu identifizieren. Sagen Sie etwas wie:
<a href="http://www.foracure.org.au/#_b=1" target="_blank" style="width: 105px;"></a>
Aktualisieren Sie dann Ihre onOpen
Aufruf:
onOpen: function(e, i) {
if (e.indexOf('_b=1') > -1) {
window.open(e);
} else {
location = e;
}
}
Der einzige Nachteil ist, der Benutzer den Hash auf schweben sieht.
Wenn schließlich die Anzahl der Links, die Sie in einem neuen Fenster öffnen möchten, niedrig ist, können Sie eine Karte erstellen und dagegen prüfen. Etwas wie:
var linksThatOpenInANewWindow = {
'http://www.foracure.org.au': 1
};
onOpen: function(e, i) {
if (linksThatOpenInANewWindow[e] === 1) {
window.open(e);
} else {
location = e
}
}
Einziger Nachteil ist Wartung, abhängig von der Anzahl der Links ....
Andere haben vorgeschlagen, den Link zu modifizieren (#
oder javascript:
verwenden) und Hinzufügen eines Inline-Event-Handler (onclick
) - Ich empfehle nicht, dass überhaupt, wie es Links bricht, wenn JS deaktiviert/nicht unterstützt wird.
Viel Glück!
Werke für mich wie erwartet, das Ziel in einem neuen Tab geöffnet wird. – arkascha
Danke @arkascha. Ich habe die Frage bearbeitet, um anzuzeigen, dass das Problem in Chrome auftritt. – Steve
Ich verwende einen Chrom-Browser. Funktioniert bei mir. Offenbar ist es ein Effekt von allem, was Google für seine Chrome-Version zu dem feinen Chrom-Browser hinzufügt. – arkascha