JavaScript - 获取右键单击上下文菜单的元素的父iframe

时间:2011-01-24 17:00:01

标签: javascript

我正在开发 Firefox 扩展程序。 我想查看所选文本是否位于WEBMAIL,GOOGLE DOCS等可编辑区域中。如果是,则可以使用上下文菜单中的某些项目来修改该文本。我碰巧发现这些可编辑的textareas位于某个 iframe 内。

在上下文菜单发生之后,如何检查右键单击的所选文本是否在iframe内(因此可编辑),以便我可以使上下文菜单项可见?

window.addEventListener("contextmenu", function(e) { 
      var menu = document.getElementById('crypt');

      if(x)
      { menu.hidden=false; }
      else
      { menu.hidden=true;  }



}, false);

谢谢你, 亚历!

1 个答案:

答案 0 :(得分:0)

window.addEventListener("contextmenu", function(e) { 
    var menu_crypt = document.getElementById('crypt');
    var menu_decrypt = document.getElementById('decrypt');

    if( (e.target.nodeName == 'U')        || 
        (e.target.nodeName == 'I')        ||
        (e.target.nodeName == 'B')          )     
    {
        if (   (e.target.parentNode.nodeName == 'SPAN') ||
               (e.target.parentNode.nodeName == 'HTML') ||
               (e.target.parentNode.nodeName == 'BODY')   )
               {
                    //alert(e.target.nodeName);
                    //alert(e.target.parentNode.nodeName);
                    menu_crypt.hidden = false;
                    menu_decrypt.hidden = false;
               }            
    }
    else if (   (e.target.nodeName == 'SPAN')     ||
                (e.target.nodeName == 'HTML')     ||
                (e.target.nodeName == 'BODY')     ||
                (e.target.nodeName == 'TEXTAREA')   ) 
        {   
            menu_crypt.hidden = false;
            menu_decrypt.hidden = false;        
        }
    else if (   (e.target.nodeName == 'INPUT')  && (e.target.type!='submit')    )
        {
            //alert(e.target.type);
            //alert(e.target.nodeName);
            menu_crypt.hidden = false;
            menu_decrypt.hidden = false;        
        }


    else {      
        menu_crypt.hidden = true;
        menu_decrypt.hidden = true;
    }

}, false);

没关系。我只是设法以另一种方式解决问题!

所选文本的nodeName是下划线,斜体,粗体,跨度。我允许这些节点并过滤那些可能伪装成可编辑文本的节点。

希望这会帮助别人!