在元素内部position: fixed;
,如果您尝试在触摸开始时以错误的方式滚动滚动元素,滚动元素将“锁定”。
示例:触摸屏幕并向下拖动,然后向后拖动。该元素不会滚动。如果松开,等待几秒钟,然后尝试向上拖动,它就会滚动。
http://12me21.github.io/scroll-test.html
body {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
#scroll-container {
overflow-y: scroll;
height: 100%;
}
#scroller {
height: 200vh;
font-size: 50px;
}
Run Code Online (Sandbox Code Playgroud)
<body>
<div id=scroll-container>
<div id=scroller>Test<br>more text</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
这个答案:/sf/answers/3621311851/似乎与我遇到的问题相同,但修复不再有效。它似乎发生在所有固定元素内,并且不再由其引起-webkit-overflow-scrolling: touch;
。
现在有办法解决这个问题吗?或者我只需要完全避免position: fixed;
?
过去,当您使用 javascript设置value
a 时textarea
,Firefox 允许用户撤消此更改(例如,通过按 ctrl+Z)。但是,这不再有效,并且似乎没有任何体面的替代方案。
我已经尝试使用document.execCommand
修改的textarea
,但是这需要你自己来选择要修改的文本,它不会出现有可能在自动选择文本textarea
。
我也听说过,document.createEvent("TextEvent")
但我找不到关于此的太多信息。看来只能在光标处插入文本,我也需要删除文本。
创建我自己的撤消/重做系统并捕获ctrl+ Z/Y按下不是一个可接受的解决方案。
这里已经问过类似的问题,但它们只涉及在光标处插入文本,而不是完全改变 textarea 的值。