jquery at caret 插件在 IE 中不起作用

发布于 2024-12-26 21:40:14 字数 410 浏览 0 评论 0原文

我在caret(http://code.google.com/p/jquery-at-caret/)使用jquery插件实现了非常大的脚本逻辑,但是现在当我完成它时我意识到它只适用于Firefox和Chrome,它在 Internet Explorer 中不起作用。

我意识到函数“setCaretPosition”在 IE 中不起作用。

我只在 IE 中得到“o is undefined”,你可以在下面的代码片段中看到这个 发生在 79-89 行插件代码中,但我不知道如何解决这个问题。

我创建了非常小的代码片段来复制这个错误: http://www.mediafire.com/?xxt0medyci61690

I implement very big script logic using jquery plugin at caret(http://code.google.com/p/jquery-at-caret/), but now when I finish it I realized that it only works in Firefox and Chrome, it doesn't work in Internet Explorer.

I realized that function "setCaretPosition" is that which is not working in IE.

I am getting only in IE "o is undefined", you can see in code snippet below that this
is occurring from 79-89 lines of plugin code, but I can't figure it out how to fix this.

I create very small code snippet to just replicate this bug:
http://www.mediafire.com/?xxt0medyci61690

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望笑 2025-01-02 21:40:14

我已经修改了插件中的代码

 setCaretPosition: function(pos) {
  var f1, f2, o;
  o = this[0];
  if (o.setSelectionRange) {
    o.focus();
    return o.setSelectionRange(pos, pos);
  } else if (o.createTextRange) {
    f1 = function () {
      return o.focus();
    };
    setTimeout(f1, 10);
    f2 = function() {
      var range;
      range = o.createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      return range.select();
    };
    setTimeout(f2, 20);
    return pos;
  }
}

请检查,我已经在 IE8、IE9 和 IE8、IE9 中进行了测试。火狐。

I have modified the code in the plugin

 setCaretPosition: function(pos) {
  var f1, f2, o;
  o = this[0];
  if (o.setSelectionRange) {
    o.focus();
    return o.setSelectionRange(pos, pos);
  } else if (o.createTextRange) {
    f1 = function () {
      return o.focus();
    };
    setTimeout(f1, 10);
    f2 = function() {
      var range;
      range = o.createTextRange();
      range.collapse(true);
      range.moveEnd('character', pos);
      range.moveStart('character', pos);
      return range.select();
    };
    setTimeout(f2, 20);
    return pos;
  }
}

Please check, I have tested in IE8, IE9 & Firefox.

相权↑美人 2025-01-02 21:40:14

函数 f(o, pos) 导致了该问题。尝试创建单独的函数然后调用它们。有两个函数定义为同名f

The function f(o, pos) is causing the issue. Try to make individual functions and then call them. There are two functions define with same name f.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文