Pytanie w sprawie internet-explorer-8 – target = _blank nie działa w IE8, uruchamianie IE obok siebie (uruchamiam pakiet IE poprzez VirtualBox)

1

IE8 czasami uniemożliwia odradzanie się linków, jeśli mają one cel = _blank set.

Ten problem wydaje się być ograniczony do uszkodzonych instalacji IE, takich jak instalowanie kilku wersji obok siebie.

Zmodyfikowałem to pytanie, gdy znalazłem odpowiedź, i mam nadzieję, że zaoszczędzi to jeszcze trochę czasu. Odpowiedź znajduje się w komentarzach do pierwszej odpowiedzi na liście.

Cóż za ogromny zbiór błędnych odpowiedzi ... Co bardziej niepokojące, dzieci XHTML 1.1 uważają, że halsowanie na _target = puste przez javascript jest prawidłowym hackiem. Jeśli przeglądarka zasugerowała XHTML 1.1tylko można by się tego spodziewać. Evan Carroll
Pomocne może być przeredagowanie pytania, aby wskazać, że jest to problem przy próbie uruchomienia IE obok siebie. EricLaw
Dobry pomysł, zmieniłam to. Andrew Johnson

Twoja odpowiedź

5   odpowiedzi
-1

Tak, tryb ścisły XHTML nie akceptuje target = "_ blank".

Jeśli nie chcesz używać wszędzie window.open, możesz użyć rel = "external" i kilku dodatkowych skryptów JavaScript, jak poniżej, używając JQuery:

$(document).ready(function() {
    $("a[rel='external']").attr("target","_blank");
});

EDYCJA: Aby ustawić wszystkie wygenerowane linki:

 $("a[rel='external']").ready(function() { 
    $("a[rel='external']").attr("target","_blank");
 });

Lub bez jQuery możesz użyć skryptu,znaleźć tutaj:

function externalLinks() { 
 if (!document.getElementsByTagName) return; 
 var anchors = document.getElementsByTagName("a"); 
 for (var i=0; i<anchors.length; i++) { 
   var anchor = anchors[i]; 
   if (anchor.getAttribute("href") && 
       anchor.getAttribute("rel") == "external") 
     anchor.target = "_blank"; 
 } 
} 
window.onload = externalLinks;
Twoja współpraca składa się z „to nie działa”. Nie powinieneś pomniejszać ludzi, ponieważ rozwiązanie „nie działa”. Działa, po prostu nie do końca. João Marcus
To nie działa. Po pierwsze, linki są tworzone za pomocą javascript i jako takie nie istnieją onload. Próbowałem ustawić a.rel i a.target, ale to nie działa. Andrew Johnson
To ma być strona do współpracy, a nie „daj mi rozwiązanie, które działa po wyjęciu z pudełka”. João Marcus
Stąd moja ciągła współpraca. Andrew Johnson
-1

A jeśli użyjesztarget='blank' ? Wiem, że to nie to samo, ale otworzysz okno / wyskakujące okienko w nowej instancji, a Twoja witryna może sprawdzić poprawność trybu XHTML Strict :)

To nie działa dla mnie. Andrew Johnson
przepraszam, zgubiłem cytat. Powinno to być target = „puste” Andrea
Nadal nie działa :( Andrew Johnson
dla rekordu nie jest to „_blank”, które nie jest dozwolone w XHTML 1.0 lub 1.1 ścisłe, jest to atrybut docelowy dla elementów kotwiczących lub łączących. Został (celowo) pominięty w DTD. Jeśli użycie target = 'blank' zostało zatwierdzone jako XHTML 1.0 lub 1.1 Strict, to był błąd w części walidatora. Mimo to większość przeglądarek nadal je akceptuje i przetwarza, ważne lub nie. Gabriel Hurley
-2

Dzieje się tak, ponieważ target = „_ blank” nie jest prawidłowy w trybie ścisłym XHTML. Widzieć:

http://www.8164.org/xhtml-strict/

Następujące czynności powinny działać we wszystkich przypadkach.

<script>window.open("http://www.80vul.com/test/ie8-1.htm");</script>

Zakładam, że od IE8 Beta 1 domyślnym trybem jest teraz STRICT zamiast TRANSITIONAL.

„Klasa niezarejestrowana” podczas otwierania nowych okien oznacza, że ​​instalacja IE8 jest uszkodzona. EricLaw
Eric, trafiłeś w sedno. Mam instancje IE (6,7,8 itd.) Zainstalowane obok siebie w instancji VirtualBox. Kiedy sprawdzam stronę przez prawdziwe okno systemu Windows, działa. Dzięki! Andrew Johnson
Dostaję błąd „klasa niezarejestrowana” w IE. Andrew Johnson
Tak, niestety jest to jeden z powodów, dla których nie zalecamy hacków „obok siebie”. VPC to jedyny obsługiwany sposób, aby uzyskać side-by-side dzisiaj. Dziękuję za aktualizację! EricLaw
3

jakiego autonomicznego IE8 używasz. Stwierdziłem, że jest to problem podczas korzystania z witryny „Final Builds Site - Internet Explorer Collection” (http://finalbuilds.edskes.net/iecollection.htm) wersja 1.6.0.3. Deweloper naprawił teraz ten błąd od wersji Ver. 1.6.0.4, a linki z target = "_ blank" działają teraz zgodnie z oczekiwaniami.

0

że to już jest odpowiedź, ale chciałem tylko opowiedzieć o funkcjonalności wiążącej jQuery:

$("a.myclass").live("click",function() {
    $(this).attr("target","_blank");
});

Ten przykład ustawia atrybut „target =” _ blank ”'na dowolny link z klasą„ myclass ”, nawet te utworzone za pomocą Javascript.

Powiązane pytania