jquery - 在 webkit 浏览器上拖动输入时出现不需要的滚动

标签 jquery webkit scrollto

我正在使用 Jquery“ScrollTo”插件:http://demos.flesler.com/jquery/scrollTo/它工作正常,但我在使用 webkit 浏览器时遇到了麻烦。当我拖动输入并将光标移动到容器元素之外(具有固定大小和溢出:隐藏的 css 属性)时,它会以不期望的行为移动滚动,如下例所示:

http://jsfiddle.net/H6PaC/53/

我可以像这篇文章一样修复这个禁用 mousedown 事件:Disabling Drag Scroll for Text Inputs with JQuery使用此代码:

$("input").mousedown(function(event){
    $(event.target).focus();
    event.preventDefault();
});

但我需要传播 de Drag 事件以选择输入内的文本(这就是触发错误的原因)。

我还尝试将 -webkit-user-drag: none 应用于输入,但它不能解决问题。

我发现了类似的帖子,但任何解决了这个问题,这样如果我可以允许在输入和文本区域内选择文本,我就会感到满意。

附注我的英语不是很好,希望我已经解释清楚了。谢谢!

最佳答案

你可以尝试一下:

$("#scroll_link").click(function(){
  //disable guilty trigger, force scroll in viewport works
  window.guilty_trigger = false;
  $("div.viewport").scrollTo($("input.goal"),800);
});

$(".guilty").on('mousedown', function(e){
    window.guilty_trigger = true;
}).on('mouseup blur', function(e){
    window.guilty_trigger = false;
});

$(".viewport").on('scroll', function(e){
  //if guilty_trigger is true, viewport should keep your position
  if ( window.guilty_trigger ) {
    $("div.viewport").scrollTo($("input.guilty"));
    return false;
  }
});​

这是您的更新 jsFiddle工作中...

** 因@Jörn Berkefeld 评论而编辑

自 chrome 27(如 Jörn 所说)以来,Chrome 浏览器已停止触发输入元素中的滚动事件,因此我需要通过 mousedown 和 mouseup+blur 来更改此事件以模拟所需的行为;

关于jquery - 在 webkit 浏览器上拖动输入时出现不需要的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10847235/

相关文章:

jquery - 向 JQuery Cycle 插件添加声音

javascript - jQuery fadeIn/Out - 从所选元素中删除动画

jQuery 的 $.ajax URL 编码问题

jquery - 无论如何要使用serialscroll选择/聚焦当前div/元素以进行进一步的脚本编写?

javascript - 关于 LocalScroll 和 ScrollTo (jQuery) 的问题

javascript - $.scrollTo 到 div 不适用于我当前的 JS

javascript - 试图在同一行显示链接文本和链接图标

html - IE 10 相当于 -webkit-tap-highlight-color

css - 是否有适当的方法以编程方式动态更新部分转换和转换?例如变换原点或持续时间

jquery - 将鼠标悬停在一些 div 上并在 jquery 中显示另一个 div