2011-01-24 66 views
2

我正在开发一个Firefox扩展。 我想看看选定的文本是否位于可编辑区域,如WEBMAIL,GOOGLE DOCS等。如果是,则上下文菜单中的某些项目将可用以修改该文本。正如我碰巧发现这些可编辑的textareas位于某个iframe内。JavaScript - 获取右键单击上下文菜单的元素的父级iframe

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

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

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



}, false);

谢谢, 亚历克斯!

回答

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是下划线,斜体,粗体,跨度。我允许这些节点并过滤可能伪装成可编辑文本的节点。

希望这会帮助别人!

相关问题