那天一位寫C++的同事問我,一段網頁里,選中了一段文字,當我們用鼠標點擊下網頁,選擇的文字就取消掉了。 但是當點擊到圖片上的時候,IE出現一個現象,選擇的文字并沒有取消。
他把示例代碼發給我,我發現他已經給圖片加了事件響應,如果就在事件響應函數里,處理吧。 剛開始想用轉移焦點的思路,發現無效。 后面跟網友討論直接控制Selection選區完成了處理。
記錄如下:
var SelectImg;
function OnMousedown(e)
{
if( null != SelectImg )
{
SelectImg.style.border="1px solid #fff";
}
var targ;
if (!e)
var e = window.event;
if (e.target)
targ = e.target;
else if (e.srcElement)
targ = e.srcElement;
var tname;
tname = targ.tagName.toLowerCase();
if ( tname == "img" )
{
targ.style.border="1px solid #000";
SelectImg = targ;
document.selection && document.selection.empty && ( document.selection.empty(), 1)
|| window.getSelection && window.getSelection().removeAllRanges();
}
}
這樣解決了那位朋友的問題,當把示例代碼發過去,朋友很高興,不過問起:
( document.selection.empty(), 1) 這是做什么? 我想也許不是寫JS的人,會有這個疑問,我在這里也介紹下,這是為了讓這個函數執行,并返回值 == 1 。
posted on 2011-03-26 12:08
-274°C 閱讀(1882)
評論(0) 編輯 收藏 所屬分類:
web前端