2013-03-08 26 views
5

我知道這個窗口的事件mouseup只是IE 7和8沒有。我想知道是否有人爲此找到了解決方法,或者如果這甚至是可能的。在IE 7/8窗口外出現`mouseup`文件夾的問題

我目前正在開發一個項目,用戶可以點擊,拖動繪製線條,如果用戶在窗口外面拖動讓鼠標放開,繪圖事務將被取消。

+1

由於IE(所有版本)跟蹤/提供的瀏覽器窗口外的鼠標移動存在安全bug(即使應用程序沒有焦點!)http://spider.io/blog/2012/12/internet-explorer-data-leak /我們(開發社區)完全期望在所有版本的IE中修復此行爲。因此,在這一點上,我會非常謹慎地依賴於在瀏覽器窗口之外發起的事件。 – scunliffe 2013-03-08 21:38:03

+1

......但是微軟(深知他們在網絡廣告世界的地位)正在採取觀望的態度:http://blogs.msdn.com/b/ie/archive/2012/12/13/update-被稱爲信息和安全問題與鼠標位置行爲.aspx – scunliffe 2013-03-08 21:38:41

回答

0

不是直接的,但我相信這應該工作。

在您的mousemove事件中,請檢查Event.buttons屬性。如果它爲零,那麼用戶必須在窗口外釋放鼠標,並且可以取消拖動。

我現在正在檢查瀏覽器的兼容性,所以這個答案可能會被編輯。我的電腦現在很慢!

2

你的困難聽起來像是失去了事件範圍的窗口更多。

你使用的是jQuery嗎?使用jQuery,您還可以標記mousemove事件,並使用「which」屬性來檢測按鈕是否被按下。當你回到窗口時甚至會發生這種情況。但是,當你在窗外時,它不會起火。

或者,您可以使用$(window).mouseleave來檢測它何時離開窗口。但是一旦它離開了窗口,你將無法檢測到更多的鼠標事件(如果它們能夠檢測到你右鍵點擊桌面等時會發現一個可怕的缺陷)。

因此,您受到所有瀏覽器中瀏覽器安全實現的限制,並且無法繞過這些......但您可以添加一些圍繞事件的工作以提供「類似」體驗。

+0

我們正在使用Dojo 1.7。我正在考慮使用窗口的'mouseleave'事件,但它確實與其他瀏覽器中的功能相匹配。在某些瀏覽器中有一種方法可以檢測窗口外的鼠標事件。我們已經實現了window.onmouseup事件,該事件在用戶在畫布中「mousedown」時註冊。 – AdamDev 2013-03-08 22:00:05

+0

酷,Dojo,Mootools或jQuery至少你正在使用一些東西來抽象瀏覽器的差異。在這種情況下,我認爲熊會「試圖」用鼠標在瀏覽器外檢測任何/某些事件。 – 2013-03-08 22:02:18

+0

我想,但至少值得一試!感謝您的幫助。 – AdamDev 2013-03-08 22:07:59