Understanding WCAG 2.0

Skip to Content (Press Enter)

SCR24: Új ablak megnyitása a felhasználói kérésre történő progresszív fejlesztéssel

Alkalmazás

HTML 4.01 és XHTML 1.0

Ez a technika az alábbiakra vonatkozik:

Leírás

A technikának az a célja, hogy elkerülhetővé váljon a felhasználó szándéka ellenére megjelenő új ablak okozta zavar. A hirtelen megnyíló ablakok bizonyos felhasználókat megzavarhatnak, vagy teljesen elkerülhetik a felhasználók figyelmét. Abban az esetben, ha a dokumentum típusa nem teszi lehetővé a target attribútum alkalmazását (ez az attribútum nem létezik a HTML 4.01 Strict vagy XHTML 1.0 Strict verziókban), vagy a szerkesztő mellőzi annak használatát, akkor az új ablak az ECMAScript alkalmazással nyitható meg. Az alábbi példa a szkripttel történő új ablak megnyitását szemlélteti. A szkript egy eseménykezelővel egészíti ki a hivatkozást (<a> tag) és figyelmezteti a felhasználót arra, hogy a tartalom egy új ablakban fog megjelenni.

Példák

1. példa

Kijelölés:

A dokumentum fejlécében szereplő szkript horogpontként használja a hivatkozás azonosítóját.

Példa kód:


<script type="text/javascript" src="popup.js"></script>
?
<a href="help.html" id="newwin">Show Help</a

Szkript:

Példa kód:

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

Források

A források csak információs célokat szolgálnak, és csak angolul elérhetőek.

Ellenőrzések

Folyamat
  1. Aktiválja a dokumentum összes hivatkozását és ellenőrizze, hogy a tartalom új ablakban nyílik-e meg.

  2. Minden új ablakban megnyíló hivatkozás esetében ellenőrizze, hogy az adott hivatkozás szkript segítségével végzi-e el az alábbiakat:

    1. az új ablak megnyitásával kapcsolatos jelzés,

    2. hardver független eseménykezelő alkalmazása, és

    3. az új ablak megnyílásának elmaradása esetén lehetővé teszi-e azt, hogy a böngésző az eredeti ablakban jelenítse meg a tartalmat.

Elvárható eredmények
  • A 2. pont igaz

Teljesítési feltételek: