13 Obxectos, imaxes e applets

Índice

  1. Introdución aos obxectos, as imaxes e os applets
  2. Inclusión dunha imaxe: o elemento IMG
  3. Inclusión xenérica: o elemento OBJECT
    1. Regras para mostrar obxectos
    2. Inicialización do obxectos: o elemento PARAM
    3. Esquemas globais de nomes de obxectos
    4. Declaracións e creacións de obxectos
  4. Inclusión dun applet: o elemento APPLET
  5. Notas sobre documentos embebidos
  6. Mapas de imaxes
    1. Mapas de imaxes do lado do cliente: os elementos MAP e AREA
    2. Mapas de imaxes do lado do servidor
  7. Representación visual das imaxes, os obxectos e os applets
    1. Ancho e alto
    2. Espazo en branco arredor das imaxes e os obxectos
    3. Bordes
    4. Aliñamento
  8. Como especificar un texto alternativo

13.1 Introdución aos obxectos, as imaxes e os applets

As características multimédia da HTML permiten-lles aos autores incluir imaxes, applets (programas que se descarregan e rodan automaticamente na máquina do usuário), clips de video e outros documentos HTML nas suas páxinas.

Por exemplo, para incluir unha imaxe PNG nun documento, os autores poden escreber:

<BODY>
<P>Velaqui un primeiro plano do Gran Canón:
<OBJECT data="canon.png" type="image/png">
Este é un <EM>primeiro plano</EM> do Gran Canón.
</OBJECT>
</BODY>

As versións anteriores da HTML permitian-lles aos autores incluir imaxes (por meio IMG ) e applets (por meio de APPLET ). Estes elementos teñen várias limitacións:

Para confrontar estes temas, HTML 4 introduce o elemento OBJECT , que agora oferece unha solución ampla à inclusión de obxectos xenéricos. O elemento OBJECT permite que os autores de HTML especifiquen todo o que un obxecto requira para ser mostrado por un axente de usuário: código fonte, valores iniciais e dados de tempo de execución. Nesta especificación, o termo "obxecto" usa-se para descreber as cousas que a xente quere incluir nos documentos HTML; outros termos usados habitualmente para estas cousas son: applets, módulos, plug-ins, manipuladores de médios, etc.

Deste xeito, o novo elemento OBJECT subsume algunhas das tarefas realizadas por outros elementos existentes. Considere-se a seguinte tabela de funcionalidades:

Tipo de inclusión Elemento específico Elemento xenérico
Imaxe IMG OBJECT
Applet APPLET (Desaprovado ) OBJECT
Outro documento HTML IFRAME OBJECT

A tabela indica que cada tipo de inclusión ten unha solución específica e outra xeral. O elemento xenérico OBJECT servirá como solución para incorporar tipos de médios futuros.

Para incluir imaxes, os autores poden usar o elemento OBJECT ou o elemento IMG .

Para incluir applets , os autores deberian usar o elemento OBJECT , dado que elemento APPLET está desaprovado .

Para incluir un documento HTML noutro, os autores poden tanto usar o novo elemento  IFRAME como o elemento OBJECT . Nos dous casos, o documento embedido permanece independente do documento principal. Os axentes de usuário poden mostrar o elemento embebido nunha xanela diferente dentro do documento principal. Consulte as notas sobre documentos embebidos para unha comparación entre OBJECT e IFRAME para inclusión de documentos.

As imaxes e outros obxectos incluídos poden ter hipervínculos asociados con eles, tanto através dos mecanismos de vinculación habituais, como tamén através de mapas de imaxes . Un mapa de imaxes especifica rexións xeométricas activas nun obxecto incluído e lle asigna un vínculo a cada rexión. Ao activá-los, estes vínculos poden facer que se recupere un documento, poden facer correr un programa no servidor, etc.

Nas seccións que seguen, tratamos os diversos mecanismos de que dispoñen os autores para a inclusión de multimédia e a creación de mapas de imaxes para esas inclusións.

13.2 Inclusión dunha imaxe: o elemento IMG

<!-- Para evitar problemas con axentes de usuário de só texto,
asi como para facer o conteúdo das imaxes comprensíbel e
navegábel para os usuários con axentes de usuários non visuais,
ten que fornecer unha descrición con ALT e evitar mapas de imaxes do lado do servidor -->
<!ELEMENT IMG - O EMPTY -- Imaxe incluída -->
<!ATTLIST IMG
%attrs; -- %coreattrs, %i18n, %events --
src %URI; #REQUIRED -- URI de imaxe a incluir --
alt %Text; #REQUIRED -- descrición breve --
longdesc %URI; #IMPLIED -- vínculo a descrición longa
(complementa alt) --
name CDATA #IMPLIED -- nome da imaxe para scripts --
height %Length; #IMPLIED -- indicar o alto --
width %Length; #IMPLIED -- indicar o ancho --
usemap %URI; #IMPLIED -- usar un mapa de imaxes do lado do cliente --
ismap (ismap) #IMPLIED -- usar un mapa de imaxes do lado do servidor --
>

Etiqueta inicial: requerida, Etiqueta final: proibida

Definicións dos atributos

src = uri [CT]
Este atributo especifica a localización do recurso de imaxe. Exemplos de formatos de imaxes coñecidos incluen GIF, JPEG e PNG.
longdesc = uri [CT]
Este atributo especifica un vínculo cunha descrición longa da imaxe. Esta descrición deberia complementar a descrición longa fornecida co atributo alt . Cando a imaxe ten un mapa de imaxes asociado, este atributo deberia fornecer información sobre os conteúdos do mapa de imaxes. Isto é particularmente importante para mapas de imaxes do lado do servidor. Dado que un elemento IMG pode estar no conteúdo dun elemento A ,  o mecanismo do axente de usuário na interface do usuário para aceder ao recurso "longdesc" do primeiro debe ser diferente ao mecanismo para aceder o recurso href do segundo.
name = cdata [CI]
Este atributo dá-lle nome ao elemento para que poda ser referido desde follas de estilo ou script. Nota. Este atributo incluíu-se por compatibilidade para trás. As aplicacións deberian usar o atributo id para identificar elementos.

Atributos que se definen noutro lugar

O elemento IMG embebe unha imaxe no documento actual na localización da definición do elemento. O elemento IMG non ten conteúdo; substitue-se na liña pola imaxe designada co atributo src , sendo a exceición as imaxes aliñadas à esquerda ou à direita que se fan "flotar" fora da liña.

Nun exemplo anterior, definimos un vínculo cunha foto de família. Aqui insertamos a foto directamente no documento actual:

<BODY>
<P>Acabo de voltar das vacacións! Velaqui unha foto da miña família no lago:
<IMG src="http://www.unhaempresa.com/Xente/Ian/vacacions/familia.png"
alt="Foto da miña família no lago.">
</BODY>

Esta inclusión pode-se lograr tamén co elemento OBJECT como segue:

<BODY>
<P>Acabo de voltar das vacacións! Velaqui unha foto da miña família no lago:
<OBJECT data="http://www.unhaempresa.com/Xente/Ian/vacacions/familia.png"
type="image/png">
Foto da miña família no lago.
</OBJECT>
</BODY>

O atributo alt especifica un texto alternativo que se apresenta cando non se pode mostrar a imaxe (ver máis abaixo para información sobre como especificar un texto alternativo ). Os axentes de usuário deben mostrar un texto alternativo cando non aceiten imaxes, non aceiten determinado tipo de imaxe ou cando estiveren configurados para non mostrar imaxes.

O exemplo seguinte mostra como se pode usar o atributo longdesc para vincular cunha descrición máis longa.

<BODY>
<P>
<IMG src="mapadositio.gif"
alt="Mapa do Sítio de HP Labs"
longdesc="mapadositio.html">
</BODY>

O atributo alt fornece unha descrición breve da imaxe. Isto deberia ser suficiente para permitir-lles aos usuários decidir se queren seguir o vínculo dado polo atributo longdesc , neste caso "mapadositio.html".

Consulte a sección sobre apresentación visual de obxectos, imaxes e applets para máis información sobre tamaño, aliñamento e bordes.

13.3 Inclusión xenérica: o elemento OBJECT

<!ELEMENT OBJECT - - (PARAM | %flow;)*
-- obxecto embebido xenérico -->
<!ATTLIST OBJECT
%attrs; -- %coreattrs, %i18n, %events --
declare (declare) #IMPLIED -- declarar mais non crear --
classid %URI; #IMPLIED -- identifica unha implementación --
codebase %URI; #IMPLIED -- URI base para for classid, data, archive--
data %URI; #IMPLIED -- referéncia aos dados do obxecto --
type %ContentType; #IMPLIED -- tipo de conteúdo dos dados --
codetype %ContentType; #IMPLIED -- tipo de conteúdo do código --
archive CDATA #IMPLIED -- lista de URI separados por espazos --
standby %Text; #IMPLIED -- mensaxe para mostrar ao carregar --
height %Length; #IMPLIED -- indicar o alto --
width %Length; #IMPLIED -- indicar o ancho --
usemap %URI; #IMPLIED -- usar un mapa de imaxes do lado do cliente client-side image map --
name CDATA #IMPLIED -- remeter como parte dun formulário --
tabindex NUMBER #IMPLIED -- posición na orde de tabulación --
>

Etiqueta inicial: requerida, Etiqueta final: requerida

Definicións dos atributos

classid = uri [CT]
Pode-se usar este atributo para indicar a localización da implementación dun obxecto por meio dun URI. Pode-se usar conxuntamente con, ou como alternativa ao atributo data , dependendo do tipo de obxecto de que se trate.
codebase = uri [CT]
Este atributo especifica a rota base usada para resolver URI relativos especificados cos atributos classid , data e archive . De estar ausente, o seu valor por omisión é o URI base do documento actual.
codetype = content-type [CI]
Este atributo especifica o tipo de conteúdo dos dados esperados ao traer o obxecto especificado por classid . Este atributo é optativo pero recomendado cando se especifica classid , dado que lle permite ao axente de usuário evitar carregar información para tipos de conteúdo que non aceite. De estar ausente, o seu valor por omisión é o do atributo type.
data = uri [CT]
Este atributo pode-se usar para especificar a localización dos dados do obxecto, por exemplo, dados de imaxe para obxectos que definan imaxes, ou máis xeralmente, unha forma serializada dun obxecto que pode ser usada para recreá-lo. Se se dá como un URI relativo, deberia-se interpretar relativo ao atributo codebase.
type = content-type [CI]
Este atributo especifica o tipo de conteúdo dos dados especificados con data . Este atributo é optativo mais recomendado cando se especifique data , dado que lle permite ao axente de usuário evitar carregar información para tipos de conteúdo non aceitados. Se o valor deste atributo difire do Tipo de Conteúdo HTTP retornado polo servidor cando se recupera o obxecto, o Tipo de Conteúdo HTTP ten precedéncia.
archive = uri-list [CT]
Este atributo pode-se usar para especificar unha lista separada por espazos de URI de arquivos que conteñan recursos relevantes para os obxectos, que poden incluir os recursos especificados polos atributos classid e data Pré-carregar os arquivos ocasionará normalmente tempos de cárrega máis reducidos para os obxectos. Os arquivos especificados como URI relativos deberian ser interpretados como relativos ao atributo codebase.
declare [CI]
Cando estiver presente, este atributo booleando fai da definición OBJECT unha declaración só. O obxecto debe ser creado cunha definición OBJECT posterior referida a esta declaración.
standby = text [CS]
Este atributo especifica unha mensaxe que un axente de usuário pode mostrar encuanto carrega a implementación do obxecto e os dados.

Atributos que se definen noutro lugar

A maioria dos axentes de usuário teñen mecanismos incorporados para mostrar tipos de dados comuns, como texto, imaxes GIF, cores, tipos de letras e unha variedade de elementos gráficos. Para mostraren tipos de dados que non aceiten en princípio, os axentes de usuário normalmente fan correr aplicativos externos. O elemento OBJECT permite-lles aos autores controlar se os dados deberian ser mostrados externamente ou con algun programa, especificado polo autor, que mostre os dados dentro do axente de usuário.

No caso máis xeral, un autor pode necesitar especificar tres tipos de información:

O elemento OBJECT permite que os autores especifiquen os tres tipos de dados, mais os autores non teñen que especificá-los os tres a un tempo. Por exemplo, alguns obxectos poden non requerir dados (p.ex., unh applet completo que realiza unha animación pequena). Outros poden non requerir información de implementación adicional, isto é, o axente de usuário mesmo pode saber xa como mostrar ese tipo de dados (p.ex., imaxes GIF).

Os autores especifican a implementación dun obxecto e a localización dos dados que se han de mostrar mediante o elemento OBJECT . Para especificar valores de tempo de execución, porén, os autores usan o elemento PARAM , que se trata na sección sobre inicialización de obxectos.

O elemento OBJECT pode aparecer tamén no conteúdo do elemento HEAD . Dado que os axentes de usuário normalmente non mostran os elementos do cabezallo ( HEAD ), os autores deberian-se asegurar de que nengun elemento OBJECT de HEAD especifique conteúdo que poida ser mostrado. Consulte a sección sobre  exemplos de como incluir o elemento OBJECT no elemento HEAD .

Consulte a sección sobre contróis de formulários para información sobre os elementos OBJECT nos formulários.

Este documento non especifica o comportamento dos elementos OBJECT que usan o atributo tanto o atributo classid para identificar unha implementación como o atributo data para especificar dados para esa implementación. Para asegurar-se a portabilidade, os autores deberian usar o elemento PARAM para indicar-lles às implementacións onde recoller dados adicionais.

13.3.1 Regras para mostrar obxectos

Un axente de usuário debe mostrar un elemento OBJECT dacordo coas seguintes regras de precedéncia:

  1. O axente de usuário debe primeiro tentar mostrar o obxecto. Non deberia mostrar os conteúdos do elemento, senón que debe examiná-los por se o elemento contén alguns fillos directos que sexan elementos PARAM   (ver inicialización de obxectos ) ou elementos MAP (ver mapas de imaxes do lado do cliente ).
  2. Se o axente de usuário non é capaz de mostrar o obxecto por calquer razón (estar configurado para non facé-lo, auséncia de recursos, arquitectura errónea, etc.), debe tentar mostrar os seus conteúdos.

Os autores non deberian incluir conteúdo nos elementos  OBJECT que aparezan no elemento HEAD .

No exemplo seguinte, inserimos un applet dun relóxio analóxico nun documento mediante o elemento OBJECT . O applet, escrito na linguaxe Python, non require dados adicionais ou valores de tempo de execución. O atributo classid especifica a localización do applet:

    
<P><OBJECT classid="http://www.miamachina.it/reloxioanaloxico.py">
</OBJECT>

Observe-se que o relóxio se mostrará axiña que o axente de usuário interprete esta declaración OBJECT . É posíbel adiar a representación dun obxecto declarando primeiro o obxecto (descrito máis abaixo).

Os autores deberian completar esta declaración incluindo un texto alternativo como conteúdo de OBJECT por se o axente de usuário non pode representar o relóxio.

    
<P><OBJECT classid="http://www.miamachina.it/reloxioanaloxico.py">
Reloxio animado.
</OBJECT>

Unha consecuéncia significativa do deseño do elemento OBJECT é que oferece un mecanismo para especificar  representacións de obxectos alternativas; cada declaración OBJECT alternativa pode especificar tipos de conteúdo alternativos. Se un axente de usuário non pode mostrar o OBJECT máis externo, tenta mostrar o conteúdo, que poden ser outro elemento OBJECT , etc.

No exemplo seguinte, embebemos várias declaracións OBJECT para ilustrar como funcionan as representacións alternativas. Un axente de usuário tentará mostrar o primeiro elemento OBJECT se pode, na seguinte orde: (1) un applet Terra escrito na linguaxe Python, (2) unha animación MPEG da Terra, (3) unha imaxe GIF da terra, (4) texto alternativo.

<P>                 <!-- Primeiro, tenta o applet Python -->
<OBJECT title="A Terra vista desde o espazo"
classid="http://www.observer.mars/ATerra.py">
<!-- Se non, tenta o video MPEG -->
<OBJECT data="ATerra.mpeg" type="application/mpeg">
<!-- Se non, tenta a imaxe GIF-->
<OBJECT data="ATerra.gif" type="image/gif">
<!-- Se non, mostra o texto -->
A <STRONG>Terra</STRONG> vista desde o espazo.
</OBJECT>
</OBJECT>
</OBJECT>

A declaración exterior especifica un applet que re non require dados ou valores iniciais. A segunda declaración especifica unha animación MPEG e, dado que non define a localización dunha implementación que trate MPEG, confia no axente de usuário para tratar a animación. Tamén indicamos o atributo type para que un axente de usuário que saiba que non pode mostrar MPEG non se moleste en traer "ATerra.mpeg" da rede. A terceira declaración especifica a localización dun ficheiro GIF e fornece texto alternativo no caso de que fallen todos os demáis mecanismos.

Dados na liña frente a externos. Os dados que haxa que mostrar poden-se fornecer de duas maneiras: na liña e dunha fonte externa. Mentres que o primeiro método normalmente producirá unha representación máis rápida, non é conveniente ao mostrar cantidades grandes de dados.

Velaqui un exeemplo que ilustra como se lle poden pasar dados na liña a un OBJECT :

<P>
<OBJECT id="reloxio1"
classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="data:application/x-oleobject;base64, ...base64 data...">
Un relóxio.
</OBJECT>

Consulte a sección sobre representación visual de obxectos, imaxes e applets para información sobre tamaño, aliñamento e bordes de obxectos.

13.3.2 Inicialización de obxectos: o elemento PARAM

<!ELEMENT PARAM - O EMPTY              -- valor de propriedade con nome -->
<!ATTLIST PARAM
id ID #IMPLIED -- id único para todo o documento --
name CDATA #REQUIRED -- nome da propriedade --
value CDATA #IMPLIED -- valores da propriedade --
valuetype (DATA|REF|OBJECT) DATA -- Como interpretar os valores --
type %ContentType; #IMPLIED -- tipo de conteúdo para o valor
cando valuetype=ref --
>

Etiqueta inicial: requerida , Etiqueta final: proibida

Definicións dos atributos

name = cdata
Este atributo define o nome dun parámetro de tempo de execución, que se asume é coñecido do obxecto insertado. Que a propriedade varie con maiúsculas e minúsculas depende da implementación específica do obxecto. 
value = cdata
Este atributo especifica o valor dun parámetro de tempo de execución especificado con name . Os valores das propriedades non teñen sentido en HTML; o seu sentido determina-o o obxecto en questión.
valuetype = data|ref|object [CI]
Este atributo especifica o tipo do atributo value. Valores posíbeis:
  • data: Este é o valor por omisión do atributo. Significa que o valor especificado por value será avaliado e pasado à implementación do obxecto como unha secuéncia.
  • ref: O valor especificado por value é un URI que designa un recurso no que se armacenan valores de tempo de execución. Isto permite aceitar ferramentas para identificar URI dados como parámetros. O URI debe ser pasado ao obxecto como está, isto é, sen resolver.
  • object: O valor especificado por  value é un identificador que se refire a unha declaración de un OBJECT no mesmo documento. O identificador debe ser o valor do atributo id indicado para o elemento OBJECT declarado.
type = content-type [CI]
Este atributo especifica o tipo de conteúdo do recurso designado polo atributo value no caso no que  valuetype sexa "ref". Deste xeito, este atributo especifica-lle ao axente de usuário o tipo de valores que atopará no URI designado por value.

Atributos que se definen noutro lugar

Os elementos PARAM especifican un conxunto de valores que poden ser requeridos por un obxecto durante o seu tempo de execución. Pode aparecer calquer número de elementos PARAM no conteúdo dun elemento OBJECT ou APPLET , en calquer orde, mais deben ir colocados no comezo do conteúdo do elemento OBJECT or APPLET que os engloba.

Asume-se que a sintaxe dos nomes e valores é comprendida pola implementación do obxecto. Este documento non especifica como deberian os axentes de usuário recuperar os pares nome/valor nen como deberian interpretar nomes de parámetros que aparezan duas veces.

Tornamos ao exemplo do relóxio para ilustar o uso de PARAM : supoña que o applet pode tratar dous parámetros de tempo de execución que definen a sua altura e ancho iniciais. Podemos designar as dimensións iniciais como 40x40 píxeis con dous elementos PARAM.

    
<P><OBJECT classid="http://www.miamachina.it/reloxioanaloxico.py">
<PARAM name="alto" value="40" valuetype="data">
<PARAM name="ancho" value="40" valuetype="data">
Este axente de usuário non pode mostrar aplicacións Python.
</OBJECT>

No exemplo seguinte, os dados de tempo de execución para o parámetro "Val_iniciais" do obxecto especifican-se como un recurso externo (un ficheiro GIF). O valor do atributo valuetype fai-se asi "ref" e o value é un URI que designa o recurso.

<P><OBJECT classid="http://www.cousasderegalo.com/aplicacionderegalo"
standby="A carregar Elvis...">
<PARAM name="Val_iniciais"
value="./imaxes/elvis.gif">
valuetype="ref">
</OBJECT>

Observe-se que tamén indicamos o atributo standby para que o axente de usuário poida mostrar unha mensaxe mentres o mecanismo de representación se carrega.

Cando se mostra un elemento OBJECT , os axentes de usuário deben procurar o conteúdo só para os elementos PARAM que son fillos directos e "pasar-llos" ao OBJECT .

Asi, no exemplo seguinte, se se mostra "obx1", "param1" aplica-se a "obx1" (e non "obj2"). Se "obx1" non se mostra e "obx2" si, ignora-se "param1"e "param2" aplica-se a "obx2". Se non se mostrar nengun OBJECT , non se aplica nengun PARAM ..

<P>
<OBJECT id="obx1">
<PARAM name="param1">
<OBJECT id="obx2">
<PARAM name="param2">
</OBJECT>
</OBJECT>

13.3.3 Esquemas globais de nomes para os obxectos

A localización da implementación dun obxecto dá-se como un URI. Como se dixo na Introdución aos URI , o primeiro segmento dun URI absoluto especifica o esquema de nomes usado para transferir os dados designados polo URI. Para os documentos HTML, este esquema é habitualmente "http". Alguns applets poden empregar outros esquemas de nomes. Por exemplo, ao especificar un applet Java, os autores poden usar URI que comecen con "java" e para applets ActiveX, os autores poden usar "clsid".

No seguinte exemplo, inserimos un applet Java nun documento HTML.

<P><OBJECT classid="java:program.start">
</OBJECT>

Ao incluir o atributo codetype , un axente de usuário pode decidir se recuperar unha aplicación Java baseado na sua capacidade de facé-lo.

<OBJECT codetype="application/java-archive"
classid="java:program.start">
</OBJECT>

Alguns esquemas de representación requiren información adicional para identificar a sua implementación e hai-lles que indicar onde atopar esa información. Os autores poden dar información do camiño à implementación do obxecto mediante o atributo codebase.

<OBJECT codetype="application/java-archive"
classid="java:program.start">
codebase="http://foooo.bar.com/java/aminhaimplementacion/"
</OBJECT>

O exemplo seguinte exemplifica (co atributo classid ) un obxecto ActiveX mediante un URI que comeza co esquema de nomes "clsid". O atributo data localiza os dados que hai que mostrar (outro relóxio).

<P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="http://www.acme.com/ole/reloxio.stm">
Non se pode usar esta aplicación.
</OBJECT>

13.3.4 Declaracións e creacións de obxectos

Os exemplos precedentes só ilustran definicións de obxectos isolados. Cando un documento há de conter máis de un exemplo do mesmo obxecto é posíbel separar a declaración do obxecto das suas creacións. Facé-lo asi ten várias avantaxes:

Para declarar un obxecto de maneira que non se execute ao ser lido polo axente de usuário, inclua o atributo booleano declare no elemento OBJECT . Ao mesmo tempo, os autores deben identificar a declaración asignando o atributo id do elemento OBJECT a un valor único. As creacións posteriores do obxecto referirán-se a este identificador.

Un OBJECT declarado debe aparecer nun documento antes da primeira aparición dese OBJECT .

Un obxecto definido co atributo declare crea-se cada vez que un elemento que se refire a ese obxecto requira que se mostre (p.ex. activa-se un vínculo que se refire a el, activa-se un obxecto que se refire a el, etc.).

No seguinte exemplo, declaramos un OBJECT e facemos que se cree referindo-nos a el desde un vínculo. Asi, o obxecto pode-se activar facendo clic sobre un texto resaltado, por exemplo.

<P><OBJECT declare
id="terra.declaration"
data="ATerra.mpeg"
type="application/mpeg">
A <STRONG>Terra</STRONG> vista desde o espazo.
</OBJECT>
...máis abaixo no documento... <P>Interesante <A href="#terra.declaration"> animación da Terra!</A>

O exemplo seguinte ilustra como especificar valores de tempo de execución que son outros obxectos. Neste exemplo, enviamos texto (de feito, un poema) a un mecanismo hipotético para ver poemas. O obxecto recoñece un parámetro de tempo de execución chamado "fonte" (para, por exemplo, mostrar o texto do poema nun tipo de letra determinado). O valor deste parámetro é el mesmo un obxecto que insire (mais que non mostra) o obxecto fonte. A relación entre o obxecto fonte e o visualizador de poemas consegue-se (1) asignando-lle o "tribuno" id à declaración do obxecto fonte e (2) referindo-o desde o elemento PARAM do obxecto visualizador de poemas (con valuetype e value).

<P><OBJECT declare
id="tribuno"
type="application/x-webfont"
data="tribuno.gif">
</OBJECT>
...ver o poema en KublaKhan.txt aqui... <P><OBJECT classid="http://foo.bar.com/visualizador_poemas" data="KublaKhan.txt"> <PARAM name="fonte" valuetype="object" value="#tribuno"> <P>Estás-te a perder un visualizador de poemas estupendo... </OBJECT>

Os axentes de usuário que non aceiten o atributo declare deben mostrar os conteúdos da declaración OBJECT.

13.4 Inclusión dun applet : o elemento APPLET

APPLET está desaprovado (con todos os seus atributos) en favor de OBJECT .

Ver a DTD transicional para a definición formal.

Definicións dos atributos

codebase = uri [CT]
Este atributo especifica o URI base do applet. Se non se especifica este atributo, entón por omisión é o mesmo que o URI base do documento actual. Os valores deste atributo só se poden referir a subdirectórios do directório que contén o documento actual. Nota. Mentres que a restrición sobre os subdirectórios se afasta da prática comun e da especificación HTML 3.2, o Grupo de Traballo en HTML escolleu deixar esta restrición nesta versión da especificación por razóns de seguranza.
code = cdata [CS]
Este atributo especifica ben o nome do ficheiro de clase que contén a subclase do applet compilado do applet, ben a rota para chegar à clase, incluindo o ficheiro da clase mesma. Interpreta-se con relación ao codebase do applet. Un dos dous, code ou object , debe estar presente.
name = cdata [CS]
Este atributo especifica un nome para a o applet concreto, que fai posíbel que os applets dunha mesma páxina se achen (e comuniquen) entre si.
archive = uri-list [CT]
Este atributo especifica unha lista separada por vírgulas de URI de arquivos que conteñen clases e outros recursos que serán "pré-carregados". As clases carregan-se usando un AppletClassLoader co codebase dado. Os URI relativos dos arquivos interpretan-se a respeito do codebase do applet. Pré-carregar recursos pode mellorar de maneira notória a actuación dos applets.
object = cdata [CS]
Este atributo dá-lle nome a un recurso que contén unha representación serializada do estado dun applet. Interpreta-se relativo ao codebase do applet. Os dados serializados conteñen o nome da clase do applet mais non a sua implementación. O nome da clase usa-se para recuperar a implementación dun ficheiro de clase ou un arquivo.

Cando se "deserializa" o applet, invoca-se o método start() mais non o método init().Os atributos válidos cando se serializou o obxecto inicial non se restauran. Todos os atributos pasados a ese APPLET estarán disponíbeis para o applet. Os autores deberian usar esta característica con moito coidado. Un applet deberia ser detido antes de que se serialice.

Un dos dous, code ou object , debe estar presente. Se se dan os dous, code e object , é un erro se fornecen nomes de clases diferentes.

width = length [CI]
Este atributo especifica o ancho inicial da área de repreentación do applet (excluindo calquer xanela ou diálogo que cree o applet).
height = length [CI]
Este atributo especifica o alto inicial da área de representación do applet (excluindo calquer xanela ou diálogo que cree o applet).

Atributos que se definen noutro lugar

Este elemento, aceitado por todos os navegadores que dispoñen de Java, permite-lles aos deseñadores embeber un applet Java nun documento HTML. Foi desaprovado en favor do elemento OBJECT .

O conteúdo do elemento APPLET actua como información alternativa para axentes de usuário que non aceiten este elemento ou que actualmente estexan configurados para non aceitar applets. Os axentes de usuário deben ignorar o conteúdo de non ser asi.

EXEMPLO DESAPROVADO:
No seguinte exemplo, o elemento APPLET inclui un applet Java no documento. Dado que non se fornece codebase , asume-se que o applet está no mesmo directório que o documento actual.

<APPLET code="Burbullas.class" width="500" height="500">
Applet Java que deseña burbullas animadas.
</APPLET>

Este exemplo pode ser ré-escrito con OBJECT como segue:

<P><OBJECT codetype="application/java"
classid="java:Burbullas.class"
width="500" height="500">
Applet Java que deseña burbullas animadas.
</OBJECT>

Poden-se-lle pasar os valores iniciais ao applet mediante o elemento PARAM .

EXEMPLO DESAPROVADO:
O applet Java seguinte:

<APPLET code="AudioItem" width="15" height="15">
<PARAM name="snd" value="Ola.au|Benvida.au">
Applet Java que toca un son de benvida.
</APPLET>

pode-se ré-escreber como segue con OBJECT :

<OBJECT codetype="application/java"
classid="AudioItem"
width="15" height="15">
<PARAM name="snd" value="Ola.au|Benvida.au">
Applet Java que toca un son de benvida.
</OBJECT>

13.5 Notas sobre os documentos embebidos

Às veces, en vez de vincular a un documento, un autor pode querer embebé-lo directamente nun documento HTML primário. Os autores poden usar tanto o elemento IFRAME ou  o elemento OBJECT para isto, mais os elementos  difiren entre si en vários aspeitos. Non só teñen diferentes modelos de conteúdos, o elemento IFRAME pode ser unha moldura de destino (ver a sección sobre especificación de información sobre a moldura de destino para máis detalles) e pode ser "seleccionado" por un axente de usuário como foco para imprimir , ver a fonte HTML, etc. Os axentes de usuário poden mostrar elementos das molduras seleccionadas de modo que se distingan das molduras non seleccionadas (p.ex., deseñando un borde arredor da moldura seleccionada).

Un documento embebido é completamente independente do documento no que vai incluído. Por exemplo, os URI relativos dentro do documento embebido  resolven-se dacordo co URI base do documento embebido, non do documento principal. Un documento embebido só se mostra dentro doutro documento (p.ex., unha sub-xanela);  doutro modo fica independente.

Por exemplo, a liña seguinte embebe os conteúdos de embebe_me.html na localización na que aparece a definición OBJECT .

...texto anterior...
<OBJECT data="embebe_me.html"> 
Atención: embebe_me.html non se pudo incluir.
</OBJECT>
...texto posterior...

Lembre que os conteúdos de OBJECT só se deben mostrar se o non se pode carregar o ficheiro especificado polo atributo data .

Non se define o comportamento dos axentes de usuário nos casos nos que un ficheiro se inclui a si mesmo.

13.6 Mapas de imaxes

Os mapas de imaxes permiten que os autores especifiquen rexións dunha imaxe ou obxecto e asignen unha acción específica para cada rexión (p.ex., recuperar un documento, correr un programa, etc.). Cando o usuário activa a  rexión, executa-se a acción.

Un mapa de imaxes crea-se asociando un obxecto a unha especificación de áreas xeométricas do obxecto sensíbeis.

Hai dous tipos de mapas de imaxes:

Preferen-se os mapas do lado do cliente sobre os mapas do lado do servidor por, cando menos, duas razóns: son acesíbeis a xente que estexa a navegar con axentes de usuário non gráficos e oferecen retro-alimentación imediata sobre se o ponteiro está sobre unha rexión activa.

13.6.1 Mapas de imaxes do lado do cliente: os elementos MAP e AREA

<!ELEMENT MAP - - ((%block;) | AREA)+ -- mapa de imaxes do lado do cliente -->
<!ATTLIST MAP
%attrs; -- %coreattrs, %i18n, %events --
name CDATA #REQUIRED -- para referéncia de usemap --
>

Etiqueta inicial: requerida, Etiqueta final: requerida

<!ELEMENT AREA - O EMPTY               -- área do mapa de imaxes do lado do cliente -->
<!ATTLIST AREA
%attrs; -- %coreattrs, %i18n, %events --
shape %Shape; rect -- controla a interpretación das coordenadas --
coords %Coords; #IMPLIED -- lista de lonxitudes separada por vírgulas --
href %URI; #IMPLIED -- URI do recurso vinculado --
nohref (nohref) #IMPLIED -- esta rexión non ten acción --
alt %Text; #REQUIRED -- descrición breve --
tabindex NUMBER #IMPLIED -- posición na orde de tabulación --
accesskey %Character; #IMPLIED -- carácter da tecla de acesibilidade --
onfocus %Script; #IMPLIED -- o elemento recebeu o foco --
onblur %Script; #IMPLIED -- o elemento perdeu o foco --
>

Etiqueta inicial: requerida, Etiqueta final:  proibida

Definicións dos atributos de MAP

name = cdata [CI]
Este atributo asigna-lle un nome ao mapa de imaxes definido polo elemento MAP .

Definicións dos atributos de AREA

shape = default|rect|circle|poly [CI]
Este atributo especifica o contorno dunha rexión. Valores posíbeis:
  • default: Especifica a rexión completa.
  • rect: Define unha rexión rectangular.
  • circle: Define unha rexión circular.
  • poly: Define unha rexión poligonal.
coords = coordenadas[CN]
Este atributo especifica a posición e contorno na pantalla. O número e orde dos valores dependen do contorno que se descrebe. Combinacións posíbeis:
  • rect: left-x, top-y, right-x, bottom-y (esquerda, superior, direito, inferior).
  • circle: center-x, center-y, radius (centro, rádio). Nota. Cando o valor do rádio ten un valor de percentaxe, os axentes de usuário deberan calcular o valor do rádio final baseando-se no ancho e alto do obxecto asociado. O rádio deberia ser o valor máis pequeno dos dous.
  • poly: x1, y1, x2, y2, ..., xN, yN. O primeiro par de coordenadas x e y e o último deberian ser as mesmas para fechar o polígono. Cando estes valores de coordenadas non son os mesmos, os axentes de  usuário deberian inferir o par de coordenadas adicionais para fechar o polígono.

As coordenadas son relativas à esquina superior esquerda do obxecto. Todos os valores son lonxitudes . Todos os valores van separados por vírgulas.

nohref [CI]
Cando se indica, este atributo booleano especifica que unha rexión non ten un vínculo asociado.

Attributo para asociar un mapa de imaxes cun elemento

usemap = uri [CT]
Este atributo asocia un mapa de imaxes cun elemento. O mapa de imaxes define-se cun elemento MAP . O valor de usemap debe correspondder o valor do atributo name do elemento MAP asociado.

Atributos que se definen noutro sítio

O elemento MAP especifica un mapa de imaxes do lado do cliente (ou outro mecanismo de navegación) que pode estar asociado con outros elementos ( OBJECT   ou INPUT ). Un mapa de imaxes está asociado cun elemento mediante o atributo usemap do elemento. O elemento MAP pode-se usar sen unha imaxe asociada para mecanismos de navegación xerais.

A presenza do atributo usemap para un OBJECT implica que o obxecto que se está a incluir é unha imaxe. Ademáis, cando o elemento OBJECT ten un mapa de imaxes do lado do cliente asociado, os axentes de usuário poden implementar interacción co usuário co OBJECT só en termos do mapa de imaxes do lado do cliente. Isto permite que os axentes de usuário (tal como un navegador de áudio ou un robot) para interaccionar co OBJECT sen o ter que procesar; o axente de usuário pode mesmo escoller non recuperar (ou procesar) o obxecto. Cando un OBJECT ten un mapa de imaxes asociado, os autores non deberian esperar que o obxecto for recuperado ou procesado por todos os axentes de usuário

O modelo de conteúdo do elemento MAP permite que os autores combinen o seguinte:

  1. Un ou máis elementos AREA . Estes elementos non teñen conteúdo mais especifican as rexións xeométricas do mapa de imaxes e o vínculo asociado con cada rexión. Observe-se que os axentes de usuário normalmente non mostran elementos AREA . Polo tanto, os autores deben fornecer un texto alternativo para cada AREA co atributo alt (ver máis abaixo información sobre como especificar texto alternativo ).
  2. Conteúdo de nível de bloco. Este conteúdo deberia incluir elementos A que especifiquen as rexións xeométricas do mapa de imaxes e o vínculo asociado con cada rexión. Observe-se que o axente de usuário deberia mostrar o conteúdo de nível de bloco dun elemento MAP . Os autores deberian usar este método para crear documentos máis acesíbeis.

Cando un elemento MAP contén conteúdo mixto (tanto elementos AREA como conteúdo de nível de bloco), os axentes de usuário deben ignorar os elementos AREA .

Os autores deberian especificar a xeometria dun mapa de imaxes completamente con elementos AREA  ou completamente con elementos A ou completamente con ambos os dous se o conteúdo é mixto. Os autores poden querer mesclar o conteúdo para que axentes de usuário antigo traten as xeometrias do mapa especificado con elementos AREA e os axentes máis recentes se aproveiten do conteúdo de bloco máis rico.

Se duas ou máis rexións definidas se sobrepoñen, o elemento que define a rexión que aparece antes no documento ten prioridade (isto é, responde ao input do usuário).

Os axentes de usuário e os autores deberian oferecer alternativas textuais para os mapas de imaxes para os casos nos que no non se dispoña de gráficos ou que non se poda aceder a eles. Por exemplo, os axentes de usuário poden usar texto alt para crear vínculos textuais en lugar dun mapa de imaxes gráfico. Estes vínculos poden ser activados de diversas maneiras (teclado, activación pola voz, etc.).

Nota. MAP non é compatíbel con axentes de usuário de HTML 2.0.

Exemplos de mapas de imaxes do lado do cliente 

No exemplo seguinte, creamos un mapa de imaxes do lado do cliente para o elemento OBJECT . Non queremos mostrar os conteúdos do mapa de imaxes cando se mostre o OBJECT , asi que "escondemos" o elemento MAP  dentro do conteúdo do elemento OBJECT . En consecuéncia, os conteúdos do elemento MAP só se mostrará se non se pode mostrar OBJECT .

<HTML>
<HEAD>
<TITLE>O mellor sítio!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mapa1">
<MAP name="mapa1">
<P>Navega o sítio:
<A href="guia.html" shape="rect" coords="0,0,118,28">Guia de aceso</a> |
<A href="atallo.html" shape="rect" coords="118,0,184,28">Ir</A> |
<A href="procura.html" shape="circle" coords="184,200,60">Procurar</A> |
<A href="os10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Os dez mellores</A>
</MAP>
</OBJECT>
</BODY>
</HTML>

Podemos querer mostrar os conteúdos do mapa de imaxes mesmo se un axente de usuário pode mostar o OBJECT . Por exemplo, podemos querer asociar un mapa de imaxes cun elemento OBJECT e incluir unha barra de navegación con texto no fondo da páxina. Para o facer, definimos o elemento MAP fora de OBJECT :

<HTML>
<HEAD>
<TITLE>O mellor sítio!</TITLE>
</HEAD>
<BODY>
<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mapa1">
</OBJECT>

...Aqui, o resto da páxina... <MAP name="mapa1"> <P>Navega o sítio: <A href="guia.html" shape="rect" coords="0,0,118,28">Guia de aceso</a> | <A href="atallo.html" shape="rect" coords="118,0,184,28">Ir</A> | <A href="procura.html" shape="circle" coords="184,200,60">Procurar</A> | <A href="os10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Os dez mellores</A> </MAP> </BODY> </HTML>

No seguinte exemplo, creamos un mapa de imaxes semellantes, esta vez usando o elemento AREA . Observe-se o uso de texto alt :

<P><OBJECT data="navbar1.gif" type="image/gif" usemap="#mapa1">
<P>Esta é unha barra de navegación
</OBJECT>

<MAP name="mapa1">
<AREA href="guia.html"
alt="Guia de aceso"
shape="rect"
coords="0,0,118,28">
<AREA href="procura.html"
alt="Procurar"
shape="rect"
coords="184,0,276,28">
<AREA href="atallo.html"
alt="Ir"
shape="circle"
coords="184,200,60">
<AREA href="os10.html"
alt="Os dez mellores"
shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">
</MAP>

Eis unha versión semellante usando o elemento IMG en vez de OBJECT (coa mesma declaración MAP ):

<P><IMG src="navbar1.gif" usemap="#mapa1" alt="barra de navegación">

O exemplo seguinte ilustra como se poden compartillar os mapas de imaxes.

Os elementos OBJECT aniñados son úteis para fornecer substitucións nos casos en que un axente de usuário non aceite determinados formatos. Por exemplo:

<P>
<OBJECT data="barranav.png" type="image/png">
<OBJECT data="barranav.gif" type="image/gif">
texto que descrebe a imaxe... </OBJECT> </OBJECT>

Se o axente de usuário non aceita o formato PNG, tenta mostrar a imaxe GIF. Se non aceita GIF (p.ex., é un axente de usuário baseado na voz), recorre à descrición en texto que se fornece cmo conteúdo do elemento OBJECT interno. Cando se aniñan asi elementos OBJECT , os autores poden querer compartillar mapas de imaxes entre eles:

<P>
<OBJECT data="barranav.png" type="image/png" usemap="#mapa1">
<OBJECT data="barranav.gif" type="image/gif" usemap="#mapa1">
<MAP name="mapa1">
<P>Navega o sítio:
<A href="guia.html" shape="rect" coords="0,0,118,28">Guia de aceso</a> |
<A href="atallo.html" shape="rect" coords="118,0,184,28">Ir</A> |
<A href="procura.html" shape="circle" coords="184,200,60">Procurar</A> |
<A href="os10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Os dez mellores</A>
</MAP>
</OBJECT>
</OBJECT>

O exemplo seguinte ilustra como se poden especificar áncoras para crear zonas inactivas dentro dun mapa de imaxes. A primeira áncora especifica unha rexión circular pequena sen vínculo asociado. A segunda áncora especifica unha rexión circular maior coas mesmas coordenadas do centro. Combinadas, as duas forman un anel cuxo centro é inactivo e cuxo borde é activo. A orde das definicións das áncoras é importante, xa que o círculo menor debe ir por riba do maior.

<MAP name="maps1">
<P>
<A shape="circle" coords="100,200,50">Sou inactivo.</A>
<A href="vinculo-anel-externo.html" shape="circle" coords="100,200,250">Sou activo.</A>
</MAP>

De maneira semellante, o atributo nohref do elemento AREA declara que a rexión xeométrica non ten vínculo asociado.

13.6.2 Mapas de imaxes do lado do servidor

Os mapas de imaxes do lado do servidor poden ser interesantes en casos nos que o mapa de imaxes é demasiado complicado para un mapa de imaxes do lado do cliente.

Só é posíbel definir un mapa de imaxes do lado do servidor para os elementos IMG e INPUT . No caso de IMG , o IMG debe estar dentro dun elemento A e o atributo booleano ismap ([CI] ) debe estar seleccionado. No caso de INPUT , o INPUT debe ser do tipo "image".

Cando o usuário activa o vínculo facendo clic na imaxe, as coordenadas da pantalla son enviadas directamente ao servidor no que reside o documento. As coordenadas da pantalla expresan-se como valores de píxel relativos à imaxe. Para información normativa sobre a definición dun píxel e como escalá-lo, consulte [CSS1] .

No exemplo seguinte, a rexión activa define un vínculo do lado do servidor. Asi, un clic en calquer ponto da imaxe fará que se lle envien as coordenadas ao servidor.

<P><A href="http://www.acme.com/cgi-bin/competicion">
<IMG src="xogo.gif" ismap alt="destino"></A>

A localización na que se fixo clic é enviada ao servidor como segue. O axente de usuário deriva un URI novo do URI especificado polo atributo href do elemento A , acrescentando-lle `?' seguido das coordenadas x e y separadas por unha vírgula. O vínculo envia-se entón usando o novo URI. No exemplo dado, se o usuário fai clic na localización x=10, y=27, entón o URI derivado é "http://www.acme.com/cgi-bin/competicion?10,27".

Os axentes de usuário que non lle oferezan ao usuário os meios de seleccionar coordenadas específicas (p.ex., axentes de usuário non gráficos que descansan sobre o uso do teclado, axentes de usuários baseados na voz, etc.) deberian-lle enviar as coordenadas "0,0" ao servidor cando se activa o vínculo.

13.7 Apresentación visual de imaxes, obxectos e applets

Todos os atributos IMG e OBJECT relacionados co aliñamento visual e a apresentación foron desaprovados en favor de follas de estilo.

13.7.1 Ancho e alto

Definicións dos atributos

width = length [CN]
Indicación do ancho da imaxe e o obxecto.
height = length [CN]
Indicación do alto da imaxe e o obxecto.

Cando se especifican, os atributos width e height indican-lles aos axentes de usuário que deben anular o tamaño natural da imaxe ou obxecto en favor destes valores.

Cando o obxecto é unha imaxe, escala-se. Os axentes de usuário deberian-se esforzar en escalar o obxecto ou imaxe para equivaler ao ancho e alto especificados polo autor. Observe-se que as lonxitudes expresadas como percentaxes basean-se no espazo horizontal ou vertical disponíbel actualmente, non no tamaño natural da imaxe, obxecto ou applet.

Os atributos height e width dan-lles aos axentes de usuário unha idea do tamaño dunha imaxe ou obxecto para que lles podan reservar espazo e continuar a mostrar o documento encanto esperan polos dados da imaxe.

13.7.2 Espazo en branco arredor de imaxes e obxectos

Definicións dos atributos

hspace = pixels [CN]
Desaprovado. Este atributo especifica a cantidade de espazo en branco a insertar à esquerda direita dun IMG , APPLET un OBJECT . O valor por omisión non se especifica, mais normalmente é unha lonxitude pequena, non cero.
vspace = pixels [CN]
Desaprovado. Este atributo especifica a cantidade de espazo en branco a insertar sobre e por baixo dun IMG , APPLET ou OBJECT . O valor por omisión non se especifica, mais normalmente é unha lonxitude pequena, non cero.

13.7.3 Bordos

Unha imaxe ou obxecto poden ir rodeadas dun bordo (p.ex., cando o usuário especifica un borde ou cnao a imaxe é o conteúdo dun elemento A ).

Definicións dos atributos

border = pixels [CN]
Desaprovado. Este atributo especifica o ancho dun bordo dun IMG ou OBJECT   en píxeis. O valor por omisión deste atributo depende do axente de usuário.

13.7.4 Aliñamento

Definicións dos atributos

align = bottom|middle|top|left|right
Desaprovado. Este atributo especifica a posición dun IMG , OBJECT ou APPLET en relación ao seu contexto.

Os seguintes valores de align refiren-se à posición do obxecto en relación co texto que o rodea:

Outros dous valores, left e right, fan que a imaxe flote na marxe esquerda ou direita actuais. Tratan-se na sección sobre obxectos flotantes .

Interpretacións diferentes do aliñamento. Os axentes de usuário varian na sua interpretación do atributo align . Alguns só teñen en conta o que lle apareceu na liña de texto anterior ao elemento, alguns teñen en conta o texto que haxa aos dous lados do elemento.

13.8 Como especificar texto alternativo

Definicións dos atributos

alt = text [CS]
Para axentes de usuários que non poden mostrar imaxes, formulários ou applets, este atributo especifica texto alternativo. O idioma do texto alternativo se especifica co atributo lang .

Vários elementos non textuais ( IMG , AREA , APPLET e INPUT ) permiten que os autores especifiquen texto alternativo que sirva como conteúdo cando non se pode mostrar normalmente o elemento. Especificar texto alternativo axuda aos usuários sen terminais gráficas, usuários cuxos navegadores non aceitan formulários, usuários con problemas visuais, os que usan sintetizadores de voz, os que configuraron os seus axentes de usuário gráficos para non mostrar imaxes, etc.

Debe-se especificar o atributo alt para os elementos IMG e AREA . É opcional para os elementos INPUT e APPLET .

Se ben o texto alternativo pode ser moi útil, hai-no que usar con coidado. Os autores deberian seguir as seguintes directrices:

Os implementadores deberian consultar a sección sobre acesibilidade para información sobre como tratar os casos de texto alternativo omitido.