在html頁面上實現拖放行為時,通常需要這種類型的行為。以下解決方案在MS Windows XP計算機上的IE 8.0.6,FireFox 3.6.6,Opera 10.53和Safari 4上進行了測試。
首先是Peter-Paul Koch的一個小功能; 跨瀏覽器事件處理程序
function addEvent(obj, evt, fn) {
if (obj.addEventListener) {
obj.addEventListener(evt, fn, false);
}
else if (obj.attachEvent) {
obj.attachEvent("on" + evt, fn);
}}
然后使用此方法將事件處理程序附加到文檔對象mouseout事件:
addEvent(document, "mouseout", function(e) {
e = e ? e : window.event;
var from = e.relatedTarget || e.toElement;
if (!from || from.nodeName == "HTML") {
// stop your drag event here
// for now we can just use an alert
alert("left window");
}});
最后,這是一個html頁面,其中嵌入了用于調試的腳本:
<html><head><script type="text/javascript">function addEvent(obj, evt, fn) {
if (obj.addEventListener) {
obj.addEventListener(evt, fn, false);
}
else if (obj.attachEvent) {
obj.attachEvent("on" + evt, fn);
}}addEvent(window,"load",function(e) {
addEvent(document, "mouseout", function(e) {
e = e ? e : window.event;
var from = e.relatedTarget || e.toElement;
if (!from || from.nodeName == "HTML") {
// stop your drag event here
// for now we can just use an alert
alert("left window");
}
});});</script></head><body></body></html>