8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

我如何捕捉 Firefox 拼写检查更正事件?

isick 1月前

32 0

我有一个文本区域。输入一些拼写错误的文本并使用右键单击 -> 更正后,该单词会被替换为拼写正确的单词。现在,我的问题是我需要执行一些

我有一个文本区域。输入一些拼写错误的文本并使用右键单击 -> 更正后,该单词会被替换为拼写正确的单词。现在,我的问题是,我需要在更正完成后执行一些 javascript 代码。

我如何才能捕获 Firefox 拼写检查更正事件? 如果只有使用 Firefox 附加组件的解决方案,我也会很高兴知道。

帖子版权声明 1、本帖标题:我如何捕捉 Firefox 拼写检查更正事件?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由isick在本站《iphone》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您只想要捕获拼写检查,还是除了键盘和其他事件之外还想捕获拼写检查更正。您是否需要区分拼写检查更正和其他类型的文本输入?

  • Mozilla 会触发 oninput ,没有在其他情况下进行测试,但应该在任何地方都能工作。

    有趣的是,FF 在使用拼写纠正时似乎会触发 两个 输入事件:它首先删除单词,然后插入新单词:

    > value=[holy coww]
    (right click and choose "cow")
    > value=[holy ]
    > value=[holy cow]
    

    http://jsfiddle.net/7ssYq/

  • 需要澄清的是,oninput 在 Firefox、Chrome、IE 9(有缺陷)、Opera 和 Safari 中受支持,但在旧版本中存在缺陷或不受支持。但是,楼主说得好像他需要区分不同类型的输入,而 oninput 不允许你这样做。

  • 不幸的是,我似乎无法让它工作。也许是因为我需要将它应用于放置在我页面的 iframe 内的 contenteditable body 元素(它是一个实时编辑器)。

  • 嗯,你在问题中提到了 textarea...无论如何,你始终可以将所有事件绑定到相关元素(使用这个:.com/questions/6577346/...)并在控制台中查看正在触发哪些事件。

  • Gaze 1月前 0 只看Ta
    引用 7

    @Thariama: 不幸的是,oninput 不会为 contenteditable 元素触发(在大多数浏览器中)。

  • 是的,我试图让问题尽可能简单,但实际上它有点复杂。这正是我尝试过的——结果什么都没有

  • oninput thg435 的回答 建议使用 ,但我想先在评论中寻找更多细节。如果您不需要区分拼写检查器更正和其他类型的输入(键盘、粘贴、拖放等),那么 oninput 就可以了。

    如果您 确实 想区分这些类型的输入,那么恐怕没有专门为拼写检查器更正而触发的事件。但是,大多数其他类型的输入都有事件,因此, ,至少 缩小输入事件是更正的可能性。请考虑以下几点:

    (function () {
        var el = document.getElementById("MyInput"),
            ignore = false;
    
        el.oninput = function (e) {
            // ignore the events that we don't need to capture
            if (ignore) {
                ignore = false;
                return true;
            }
    
            // Your code here
        }
    
        // IIRC, you need the following line for the `ondrop` event to fire
        el.ondragover = function () { return false; }
    
        // Ignore paste, drop and keypress operations
        el.onpaste = el.ondrop = el.onkeypress = setIgnore;
    
        function setIgnore (e) {
            ignore = true; 
        }
    })();
    

    然而,这并不是一个完美的解决方案。例如,对于不是由键盘启动的撤消/重做操作(以及可能还有其他一些操作),事件仍会触发。

返回
作者最近主题: