我有一些內容溢出作爲更大的佈局,這通常比頁面更廣泛的一部分。溢出的內容被其中一個容器裁剪,這很好,除了在IE9中單擊裁剪容器並使用基於鼠標的水平滾動(認爲觸摸板,ultranav,mighty mouse)導致容器中的所有內容滾動,直到剪輯內容的邊緣是可見的。我需要防止這種行爲,同時仍然允許這些鼠標滾動外部容器。在我看來,像捕獲該元素上的滾動事件並導致它們被傳遞給它的父代會很好,但我還沒有想出如何讓jQuery來做到這一點。如果任何人都能想到非JS解決方案,那也會很酷。如何停止滾動的IE瀏覽器*隱藏*溢出的內容
更新: 一些探測揭示了以下內容:由於不同的HID發送滾動事件的方式不同(我在看你突觸),唯一會被觸發的事件是滾動事件。滾動事件沒有冒泡階段,不能被取消。此外,將滾動處理程序的一部分簡單設置爲0的結果很差。這有效地排除了所有可用於大多數能夠生成側向滾動輸入的設備的javascript解決方案。我的下一個攻擊過程是通過點擊事件。點擊做泡沫,爲了發生不希望的行爲,必須首先點擊有問題的溢出:hidden div。如果我可以防止焦點,那麼它永遠不會成爲滾動事件的目標。真正的訣竅是使鏈接繼續工作。
小提琴演示該問題是 http://jsfiddle.net/conartist6/tnmT3/6/
HTML:
<div class="outer"><div class="ctnr"><div>Click in here and scroll r/l with wheel or midclick+drag. IE9 moves content, Chrome/FF do not.<div>The quick brown fox jumped over the lazy dog</div></div></div>
<div style="width: 700px;">This should still scroll normally blah blah blah blah blah blah blah blah blah lajsof ijwjlk jdslf kjojfoj jjslfj sljfoi jdfoiaj ;lsajoi fejogro lfffos joidjgoe wqqqq</div></div>
CSS:
.outer
{
width: 500px;
overflow-x: scroll;
}
.ctnr{
width: 300px;
background-color: violet;
overflow: hidden;
}
.ctnr > div
{
position: relative;
width: 200px;
height: 200px;
background-color: lightsteelblue;
}
.ctnr>div>div
{
position: absolute;
left:0;
bottom: 0;
width:400px;
background-color: salmon;
overflow: hidden;
}
我在Chrome中看到一個水平滾動條。不理解問題或問題。 – sachleen 2013-02-17 21:19:51
這就是那裏所以任何人測試解決方案可以確保它不會破壞別的東西。如上所述,您需要使用IE9和一個可以水平滾動的輸入設備,以便正確地按照說明進行操作並查看錯誤。 – conartist6 2013-02-17 21:30:05