使用JavaScript检查Firefox上的输入元素

使用JavaScript检查Firefox上的输入元素,javascript,firefox,Javascript,Firefox,我正在开发一个扩展,它监听元素上的点击事件 现在我有两个问题: 是否有一种方便的方法来检测元素是否为输入元素?类似于HTML中的input,textarea,以及XUL中的textbox 如果用户单击输入元素,如何获取用户单击的位置? 例如,有一个元素,其值设置为blah,用户在“l”和“a”之间单击,如何获取索引(在本例中为2) 每个事件都有一些在事件参数中传递的数据。您可以执行以下操作来确定单击了什么: function clickFun(event){ if (event.targ

我正在开发一个扩展,它监听元素上的点击事件

现在我有两个问题:

  • 是否有一种方便的方法来检测元素是否为输入元素?类似于HTML中的
    input
    textarea
    ,以及XUL中的
    textbox
  • 如果用户单击输入元素,如何获取用户单击的位置? 例如,有一个
    元素,其值设置为
    blah
    ,用户在“l”和“a”之间单击,如何获取索引(在本例中为2)

  • 每个事件都有一些在事件参数中传递的数据。您可以执行以下操作来确定单击了什么:

    function clickFun(event){
        if (event.target.nodeName == "INPUT") {
            var type = event.target.getAttribute('type').toLowerCase();
            if (type == 'text') {
                console.log('text input');
            } else if (type == 'checkbox') {
                console.log('checkbox');
            }
        } else if (event.target.nodeName == "TEXTAREA") {
            console.log('text area');
        }
    }
    thing.onclick = clickFun;
    
    您可以使用jQuery实现这一点,jQuery提供了一些简单的函数来检查有关元素的信息。如果您想尝试javascript框架,则由您决定

    $(':input').click(function(event){
        var $this = $(this);
        if ($this.is(':text')) {
            console.log('text input');
        } else if ($this.is(':checkbox')) {
            console.log('checkbox');
        } else if ($this.is(':textarea')) {
            console.log('textarea');
        }
    });
    
    要在他们单击文本框或区域时获取光标的位置,请尝试签出本文:

    对于#1:使用jQuery“:input”选择器很方便,如下所示:

    if ($(node).is(":input"))
        alert("It's an input element!");
    
    但一般来说,我认为没有一种简单的方法来告诉XUL元素。枚举节点名称将是我能想到的最简单的解决方案