2013-05-10 30 views
1

我正在試圖創建一個模式對話框,其中有一個垂直滾動的內容溢出。爲了演示目的,這個對話框包含一個錨點和一堆div(溢出)。這裏是我的代碼:jQuery UI:模態對話框焦點錯誤?

的HTML

<body> 
    <div id="dialog"> 
    <a href="javascript:void(null);">blah blah blah</a> 
    <div>some content to make the dialog scroll appear</div> 
    <div>some content to make the dialog scroll appear</div> 
    <div>some content to make the dialog scroll appear</div> 
    <div>some content to make the dialog scroll appear</div> 
    <div>some content to make the dialog scroll appear</div> 
    <div>some content to make the dialog scroll appear</div> 
    </div> 
</body> 

jQuery的

$(document).ready(function() { 
    $('#dialog').dialog({ 
    position: 'center', 
    height: 300, 
    width: 200, 
    modal: true 
    }); 
}); 

演示JS Bin

重現該問題:

  1. 向下滾動到對話框
  2. 失去重心的實際瀏覽器窗口的底部(去到另一個窗口,單擊桌面等)
  3. 將鼠標懸停在該對話框中未聚焦的瀏覽器窗口
  4. 單擊對話框中(或只是最小化/最大化瀏覽器窗口)

結果應該是對話框滾動回到最頂層的定位代碼(「等等等等等等」)。 (這可能需要多次嘗試才能在對話框中失去焦點/點擊)JS Bin代碼使用jQuery UI 1.10.2,但它也發生在.3中。

我相信我的問題可能與this SO question類似,但它有點不同,因爲我使用了錨標籤......但是,行hasFocus.eq(0).focus();是罪魁禍首。當該部分爲我執行時,它將我的錨標記作爲hasFocus陣列中的第一個元素。無論哪種方式,對話框的默認行爲都不應該滾動回頂端......它應該保持在原來的位置!

現在,有趣的部分是一旦你拿走modal: true,問題不再存在......所以我不確定這是一個錯誤還是它是一個「功能」。有人有想法嗎?

此外,我已經在Firefox(多個版本和安全模式)和IE8中測試了這一點。

+0

相關的jQuery UI [bug報告](http://bugs.jqueryui.com/ticket/9101)。 – incutonez 2013-05-15 21:04:11

回答