2011-01-24 65 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是下劃線,斜體,粗體,跨度。我允許這些節點並過濾可能僞裝成可編輯文本的節點。

希望這會幫助別人!

相關問題