我正在試圖創建一個模式對話框,其中有一個垂直滾動的內容溢出。爲了演示目的,這個對話框包含一個錨點和一堆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
重現該問題:
- 向下滾動到對話框
- 失去重心的實際瀏覽器窗口的底部(去到另一個窗口,單擊桌面等)
- 將鼠標懸停在該對話框中未聚焦的瀏覽器窗口
- 單擊對話框中(或只是最小化/最大化瀏覽器窗口)
結果應該是對話框滾動回到最頂層的定位代碼(「等等等等等等」)。 (這可能需要多次嘗試才能在對話框中失去焦點/點擊)JS Bin代碼使用jQuery UI 1.10.2,但它也發生在.3中。
我相信我的問題可能與this SO question類似,但它有點不同,因爲我使用了錨標籤......但是,行hasFocus.eq(0).focus();
是罪魁禍首。當該部分爲我執行時,它將我的錨標記作爲hasFocus
陣列中的第一個元素。無論哪種方式,對話框的默認行爲都不應該滾動回頂端......它應該保持在原來的位置!
現在,有趣的部分是一旦你拿走modal: true
,問題不再存在......所以我不確定這是一個錯誤還是它是一個「功能」。有人有想法嗎?
此外,我已經在Firefox(多個版本和安全模式)和IE8中測試了這一點。
相關的jQuery UI [bug報告](http://bugs.jqueryui.com/ticket/9101)。 – incutonez 2013-05-15 21:04:11