![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Se sostituisco allo span un div funziona correttamente, ma ognuna delle antemprime è su una nuova riga, cosa che ovviamente vorrei evitare. Un div con display: inline causa lo stesso problema dello span. |
#3
| |||
| |||
|
#4
| ||||||||
| ||||||||
|
|
...tuttavia ora ho un altro problema e per quanto ci abbia sbattuto la testa più volte non sono riuscito a risolverlo. Il codice seguente funziona con tutti browser che ho provato (Camino, Firefox sia per windows che per mac, Safari) tranne Internet Explorer. In pratica genera dentro un DIV una serie di contenitori che contengono un'immagine cliccabile, affiancati in linea finché nel DIV c'è spazio e separati solo dai pixel del loro margine. Cliccando sopra si apre un link, mentre passandoci sopra il mouse appaiono delle informazioni (vedere onmouseover). Tuttavia con IE succedono due cose: 1) Le immagini sono tutte appiccicate, il margine non viene applicato |
|
2) Questione più GRAVE: le funzioni onmouseover NON funzionano. Non vengono chiamate proprio! E' come se tutti gli attributi del DIV generato, margini, dimensioni, funzioni associate non esistessero per IE. Mi chiedo se il Div stesso esista... |
|
Sto impazzendo per questa cosa, qualche idea ? |
|
function drawThumbnail(number){ // Immagine var img = createImage(//parametri); img.setAttribute('width', sizex); img.setAttribute('height', sizey); |
|
// Link var anchor = document.createElement('a'); anchor.setAttribute('href', //parametri); anchor.setAttribute('target', '_blank'); anchor.appendChild(img); // Contenitore var span = document.createElement('div'); span.style.display = 'inline'; |
|
span.setAttribute('style', 'margin: 5px; border: 2px solid black; float: left'); |
|
span.style.width = sizex + 'px'; span.style.height = sizey + 'px'; span.setAttribute('id', 'thumb_' + number); span.setAttribute('onmouseover', 'viewLegend(this);'); span.setAttribute('onmouseout', 'clearLegend(this);'); |
|
span.appendChild(anchor); // Inserisci nella pagina ele.appendChild(span); } |
#5
| |||||||
| |||||||
|
|
ma se crei una pagina in HTML "statico" senza JS, IE come si comporta? Cioe' quello che voglio dire è che prima devi travare la soluzione HTMLche accontenti tutti (o cmq quelli che ti interessa) e poi lo sviluppi in JS.... |
|
beh quello lo puoi controllare facilmente... |
|
img.setAttribute('width', sizex); img.setAttribute('height', sizey); va bene, io cmq li metteri negli style, anzi se non hai bisogno di uno sconsigliabile ridimensionamento, non metterli per niente... |
|
span.style.display = 'inline'; questo non serve, prova a toglierlo |
|
prova a definire lo style come hai fatto prima: span.style.float = 'left'; |
|
... come del resto fai sotto questo è il solito problema devi dichiarare gli eventi con delle funzioni anonime: span.onmouseover = function(){viewLegend(this)}; |
|
ah, io cambierei nome a quella variabile 'span', io eviterei sempre nomi "riservati al HTML" e poi è traviente perche in realtà si tratta di un div |
#6
| |||||||
| |||||||
|
|
span.style.display = 'inline'; questo non serve, prova a toglierlo non serve secondo le specifiche W3C, ma serve per correggere un bug di IE (!). Se lo tolgo con gli altri browser non cambia nulla, con IE degenera ulteriormente |
|
prova a definire lo style come hai fatto prima: span.style.float = 'left'; proverò anche questo :-) |

|
come del resto fai sotto questo è il solito problema devi dichiarare gli eventi con delle funzioni anonime: span.onmouseover = function(){viewLegend(this)}; dici che sia meglio? |
|
Ma perché devo mettere una funzione per chiamarne a sua volta un'altra? |
|
ah, io cambierei nome a quella variabile 'span', io eviterei sempre nomi "riservati al HTML" e poi è traviente perche in realtÃ* si tratta di un div ...perché era uno span inizialmente :-) |
|
poi ho capito che con lo span non si può fare e sono passato al div + float. |
|
Grazie, ciao |
![]() |
| Thread Tools | |
| Display Modes | |
| |