

前置きが長くなりましたが,このTITLE属性内改行指定をFirefoxでも実現するスクリプトを書いてみました。Firefoxだけを相手にしているので,短いスクリプトで済みます(長くはない・・・)。またMozillaの独自拡張ですが影を半透明にしたりコーナーを丸めたりするCSS指定を使って本物っぽく見せています。
hackFirefoxToolTip = function(){
var imgs = d.getElementsByTagName('IMG');
var toolTip = d.createElement('DIV');
var shadow = d.createElement('DIV');
document.body.appendChild(shadow);
document.body.appendChild(toolTip);
with (toolTip.style) {
position = 'absolute';
backgroundColor = 'ivory';
border = '1px solid #333';
padding = '1px 3px 1px 3px';
font = '500 11px arial';
zIndex = 10000;
}
with (shadow.style) {
position = 'absolute';
MozOpacity = 0.3;
MozBorderRadius = '3px';
background = '#000';
zIndex = toolTip.style.zIndex - 1;
}
for(i=0; i<imgs.length; i++){
if(imgs[i].getAttribute('title') != null ||
imgs[i].getAttribute('alt') != null){
imgs[i].onmouseover=function(e){
var _title = this.getAttribute('title')!=null ?
this.getAttribute('title') : this.getAttribute('alt');
this.setAttribute('title', '');
toolTip.style.left = 20 + d.documentElement.scrollLeft + e.clientX + 'px';
toolTip.style.top = 10 + d.documentElement.scrollTop + e.clientY + 'px';
toolTip.innerHTML = _title.replace(/\r\n/g,'<br />').replace(/\s/g,' ');
with (shadow.style){
width = toolTip.offsetWidth -2 + 'px';
height = toolTip.offsetHeight -2 + 'px';
left = parseInt(toolTip.style.left) + 5 + 'px';
top = parseInt(toolTip.style.top) + 5 + 'px';
}
}
imgs[i].onmouseout=function(){
this.setAttribute('title', toolTip.innerHTML.replace(/<br \/>/g,' ').replace(/ /g,' '));
toolTip.style.top = '-1000px';
shadow.style.top = '-1000px';
toolTip.innerHTML = '';
}
}
}
}
window.onload = function(){
if(window.sidebar) hackFirefoxToolTip();
}
なんで,これをしたかったかというと,「画像ギャラリー
■図3.Firefoxでも改行の効いたツールチップの出来上がり














続き »