HTML 4.01 und XHTML 1.0
Die Technik bezieht sich auf:
Das Ziel dieser Technik ist es, Verwirrung zu vermeiden, die durch das Erscheinen neuer Fenster, die nicht vom Benutzer angefordert wurden, auftreten könnte. Das plötzliche Öffnen neuer Fenster kann Benutzer desorientieren oder von ihnen komplett übersehen werden. Wenn der „document type“ das target
-Attribut nicht erlaubt (es existiert nicht in HTML 4.01 Strict oder XHTML 1.0 Strict) oder wenn der Entwickler es vorzieht, dies nicht zu benutzen, können neue Fenster mit ECMAScript geöffnet werden. Das unten stehende Beispiel zeigt, wir man neue Fenster per Skript öffnet: es fügt einen Event-Handler zu einem Link (a
-Element) hinzu und warnt den Benutzer, dass sich der Inhalt in einem neuen Fenster öffnen wird.
Markup:
Das Skript ist im „head“ des Dokumentes enthalten und der Link hat eine id, die von dem Skript als Aufhänger benutzt werden kann.
Code-Beispiel:
<script type="text/javascript" src="popup.js"></script>
…
<a href="help.html" id="newwin">Show Help</a
Skript:
Code-Beispiel:
// Use traditional event model whilst support for event registration
// amongst browsers is poor.
window.onload = addHandlers;
function addHandlers()
{
var objAnchor = document.getElementById('newwin');
if (objAnchor)
{
objAnchor.firstChild.data = objAnchor.firstChild.data + ' (opens in a new window)';
objAnchor.onclick = function(event){return launchWindow(this, event);}
// UAAG requires that user agents handle events in a device-independent manner
// but only some browsers do this, so add keyboard event to be sure
objAnchor.onkeypress = function(event){return launchWindow(this, event);}
}
}
function launchWindow(objAnchor, objEvent)
{
var iKeyCode, bSuccess=false;
// If the event is from a keyboard, we only want to open the
// new window if the user requested the link (return or space)
if (objEvent && objEvent.type == 'keypress')
{
if (objEvent.keyCode)
iKeyCode = objEvent.keyCode;
else if (objEvent.which)
iKeyCode = objEvent.which;
// If not carriage return or space, return true so that the user agent
// continues to process the action
if (iKeyCode != 13 && iKeyCode != 32)
return true;
}
bSuccess = window.open(objAnchor.href);
// If the window did not open, allow the browser to continue the default
// action of opening in the same window
if (!bSuccess)
return true;
// The window was opened, so stop the browser processing further
return false;
}
Ressourcen sind nur zu Informationszwecken und keine offizielle Empfehlung.
Aktivieren Sie jeden Link im Dokument um zu prüfen, ob dieser ein neues Fenster öffnet.
Prüfen Sie für jeden Link, der ein neues Fenster öffnet, ob er ein Skript benutzt, um alles Folgende zu erreichen:
es wird darauf hingewiesen, dass sich der Link in einem neuen Fenster öffnet,
es werden geräte-unabhängige Event-Handler benutzt und
es erlaubt es dem Browser, den Inhalt im gleichen Fenster zu öffnen, wenn kein neues Fenster geöffnet wurde.
#2 ist wahr.
Wenn dies eine ausreichende Technik für ein Erfolgskriterium ist, dann bedeutet das Scheitern an diesem Testverfahren nicht zwangsläufig, dass das Erfolgskriterium nicht auf irgendeine andere Art und Weise erfüllt wurde, sondern nur, diese Technik nicht erfolgreich implementiert wurde und nicht benutzt werden kann, um die Konformität zu erklären.