關於部落格
- 一起墮落吧
  • 71193

    累積人氣

  • 2

    今日人氣

    0

    追蹤人氣

鬼來我家-更正版

function $getById(_id){ return window.document.getElementById ? window.document.getElementById(_id) : window.document.all[_id]; } function $getByTag(_tag, _parent){ return (_parent ? _parent.getElementsByTagName(_tag) : window.document.getElementsByTagName(_tag)); } function $setStyle(_obj, _property, _value){ _obj.style[_property] = _value; } function displayShowVisitor(_target, _appendDiv){ var _cloneTarget = _target.cloneNode(true); var _img = _cloneTarget.childNodes[0]; $setStyle(_appendDiv, 'left', (_appendDiv.outerHTML ? $getById('contentBlock').offsetLeft : 0 ) + _target.firstChild.offsetLeft + 'px'); $setStyle(_appendDiv, 'top', (_appendDiv.outerHTML ? $getById('contentBlock').offsetTop : 0 ) + _target.firstChild.offsetTop + 'px'); $setStyle(_img, 'width', '90px'); $setStyle(_img, 'height', '90px'); _appendDiv.firstChild ? _appendDiv.removeChild(_appendDiv.firstChild) : ''; _appendDiv.appendChild(_cloneTarget); $setStyle(_appendDiv, 'display', ''); } function visitEventReg(){ var _div = $getByTag('div', $getById('sideBlock')); var _targetDiv, _parentDiv; for(var _cnt = 0 ; _cnt < _div.length ; _cnt++){ if(_div[_cnt].className == 'boxVisit0'){ _parentDiv = _div[_cnt].parentNode; } if(_div[_cnt].className == 'sideContent' && _parentDiv && _div[_cnt].parentNode == _parentDiv){ _targetDiv = _div[_cnt]; break; } } var _appendDiv = document.createElement('div'); $setStyle(_appendDiv, 'display', 'none'); $setStyle(_appendDiv, 'position', 'absolute'); _appendDiv.onmouseout = function(){$setStyle(this, 'display', 'none');}; _targetDiv.appendChild(_appendDiv); var _visitors = $getByTag('a', _targetDiv); for(var _cnt = 0 ; _cnt < _visitors.length ; _cnt++){ _visitors[_cnt].onmouseover = function(){displayShowVisitor(this, _appendDiv);} } } visitEventReg();
改過之後的code剩這幾行,只測了ie6、ff3,其他的沒測。 事件綁定的方式改成內勘再呼叫的方式,主要是因為ie用attachEvent去綁定事件時,觸發的函數this會指到window去,而不像ff會乖乖的綁在該物件上。其實還是可以用event去判斷,但是人類因懶惰而偉大,有短的寫法幹嘛大費周章的去寫長的..... 接下來是定位的問題,先前的文章有提到IE與FireFox兩者offset的差異,後來實測之後,發現好像也不是如前篇所述,依照ie的dom tree去追,發現還是怪怪的,索性直接判斷只要是ie就綁死sideBlock的offset,反正這玩意兒只在地瓜天空用(任性.....),判斷ie也很懶惰的只用outerHTML(不是很喜歡用navigator去判斷,因為很麻煩,連摳別人的code來貼也覺得很麻煩....)。 就這樣刪刪減減的寫完囉~~寫完之後回來看.....靠~怎麼這麼簡單的小工具要寫這麼久....果然是太欠操了。
相簿設定
標籤設定
相簿狀態