link met target=“_blank” opent niet in nieuw tabblad in Chrome

Op deze websitebevat de accordeonnavigatie bovenaan een element met de naam “Foundation”: (screenshot).

Dit element wordt geproduceerd door HTML-code:

<a href="http://www.foracure.org.au" target="_blank" style="width: 105px;"></a>

Als u in Chrome echter op dit element klikt, wordt de nieuwe website niet in een nieuw tabblad geopend.

Kun je me alsjeblieft vertellen waarom? Dank je.


Antwoord 1, autoriteit 100%

Omdat JavaScript de klikgebeurtenis afhandelt. Wanneer u klikt, wordt de volgende code aangeroepen:

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);
        }   
    }       
})

De onOpenwijzigt handmatig de location.

Bewerken: wat betreft je opmerking…
Als u ImageMenu.js kunt wijzigen, kunt u het script bijwerken dat onCloseaanroept om het a-elementobject door te geven (thisin plaats van this.href)

obj.options.onClose(this, i);

Update vervolgens uw ImageMenu-instantie met de volgende onOpenwijziging:

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;
            }
        }
    });
});

Dit zou de doeleigenschap van het element controleren om te zien of het _blankis, en vervolgens window.openaanroepen, indien gevonden.

Als u ImageMenu.js liever niet wilt wijzigen, is een andere optie om uw links aan te passen om ze te identificeren in uw onOpen-handler. Zeg iets als:

<a href="http://www.foracure.org.au/#_b=1" target="_blank" style="width: 105px;"></a>

Update vervolgens uw onOpen-oproep naar:

onOpen: function(e, i) {
    if (e.indexOf('_b=1') > -1) {
        window.open(e);   
    } else {
        location = e;
    }
}

Het enige nadeel hiervan is dat de gebruiker de hash ziet bij de muisaanwijzer.

Ten slotte, als het aantal links dat u in een nieuw venster wilt openen laag is, kunt u een kaart maken en dit controleren. Iets als:

var linksThatOpenInANewWindow = {
    'http://www.foracure.org.au': 1
};
onOpen: function(e, i) {
    if (linksThatOpenInANewWindow[e] === 1) {
        window.open(e);   
    } else {
        location = e
    }
}

Het enige nadeel is onderhoud, afhankelijk van het aantal links.

Anderen hebben voorgesteld om de link aan te passen (met behulp van #of javascript:) en een inline event-handler toe te voegen (onclick) – dat doe ik niet raad dat helemaal niet aan omdat het koppelingen verbreekt wanneer JS is uitgeschakeld/niet ondersteund.


Antwoord 2, autoriteit 91%

Replace 
<a href="http://www.foracure.org.au" target="_blank"></a>    
with 
<a href="#" onclick='window.open("http://www.foracure.org.au");return false;'></a>

in uw code en werkt in Chrome en andere browsers.

Bedankt
Anurag


Antwoord 3, autoriteit 26%

Om de een of andere reden werkt het niet, dus we kunnen dit op een andere manier doen

verwijder de regel en voeg dit toe:-

<a onclick="window.open ('http://www.foracure.org.au', ''); return false" href="javascript:void(0);"></a>

Veel succes.


Antwoord 4, autoriteit 22%

Leer van een andere man:

<a onclick="window.open(this.href,'_blank');return false;" href="http://www.foracure.org.au">Some Other Site</a>

Ik vind het logisch.


Antwoord 5, autoriteit 4%

Uw syntaxis voor het doelkenmerk is correct, maar browsers hoeven dit niet te respecteren. Ze kunnen het interpreteren als het openen van de bestemming in een nieuw tabblad in plaats van in een nieuw venster, of ze kunnen het kenmerk volledig negeren. Browsers hebben instellingen voor dergelijke problemen. Bovendien kan het openen van nieuwe vensters worden voorkomen door browser-plug-ins (meestal ontworpen om vervelende advertenties te voorkomen).

Er is weinig dat je hieraan kunt doen als een auteur. U kunt overwegen om in plaats daarvan een nieuw venster met JavaScript te openen, CF. Naar het geaccepteerde antwoord op doel = “_ blanco” werkt niet in Firefox?, maar de browsers kunnen nog meer terughoudender zijn om pagina’s op die manier nieuwe ramen te laten openen dan via Target.

target = “_ blanco” werkt niet in Firefox?


Antwoord 6, Autoriteit 4%

Volgens dit artikel Target = “_ blanco” links: een probleem met de beveiliging en prestaties in webpagina’s Dit is te wijten aan beveiligingsprobleem.
Probeer het toevoegen van rel=”noopener noreferrer”naar uw tag of probeer dit JavaScript:

let link = window.open(url, "_blank");
link.opener = null;

Antwoord 7

Meest eenvoudig antwoord

<a onclick="window.open(this.href,'_blank');return false;" href="http://www.foracure.org.au">Some Other Site</a>

het werkt


Antwoord 8

Als u reageert, moet dit werken:

<a href="#" onClick={()=>window.open("https://...")}</a>

Other episodes