Desenvolvimento
Teste 7 - Identificando um Objeto na Tela
Extensão do que foi mostrado no exemplo número 5 (Particularidades Sobre Eventos - Passando Eventos para uma Função), este exemplo deve demonstrar como localizar o nome/id do objeto no qual o evento ocorreu.
Ao clicar nas figuras do Freddy abaixo, uma mensagem é imediatamente emitida mostrando o seu id.
Eis os trechos cruciais do código desta página:
<head>
<style type='text/css'>
#nightmare1 {float: left; margin-left: 50px; margin-top: 15px}
#nightmare2 {float: left; margin-left: 10px; margin-top: 15px}
#nightmare3 {float: left; margin-left: 10px; margin-top: 15px}
#nightmare4 {margin-left: 10px; margin-top: 15px}
</style>
<script type='text/javascript'>
isNS = 0
if (navigator.appName.indexOf('Netscape') != -1) {isNS = 1}
var name = null
function findObject(what) {
if (document.layers) {
var testObj
var xPos = what.pageX
var yPos = what.pageY
for (var i = document.layers.length - 1; i >= 0; i--) {
testObj = document.layers[i]
if (
(xPos > testObj.left) &&
(xPos < testObj.left + testObj.clip.width) &&
(yPos > testObj.top) &&
(yPos < testObj.top + testObj.clip.height)
) {
objectID = testObj.name
alert('Você clicou em "' + objectID + '".')
return
}
}
}
else {
if (isNS) { objectID = what.target.id }
else { objectID = what.srcElement.id }
alert('Você clicou em "' + objectID + '".')
return
}
return
}
</script>
<head>
<body>
...
<div><img id="nightmare1" src="../../movies/mov_pics/mov_nightmareonelmstreet.jpg" onclick="findObject(event)" /></div>
<div><img id="nightmare2" src="../../movies/mov_pics/mov_nightmareonelmstreet2.jpg" onclick="findObject(event)" /></div>
<div><img id="nightmare3" src="../../movies/mov_pics/mov_nightmareonelmstreet3.jpg" onclick="findObject(event)" /></div>
<div><img id="nightmare4" src="../../movies/mov_pics/mov_nightmareonelmstreet4.jpg" onclick="findObject(event)" /></div>
...
</body>
A primeira parte da cláusula if da função findObject() existe em função do Netscape 4. Ela determina a posição do mouse no momento do evento, verifica cada camada do array de camadas e determina a posição do objeto.
Caso contrário (opção else, válida para o IE e versões mais recentes do Netscape), o código simplesmente busca o nome do elemento fonte, ou seja, o nome do objeto a partir do qual o evento se origina.
O handler de evento onclick() em cada figura de DVD do Freddy dispara a função findObject(). O código especifica o atributo id dentro da tag <img>.