2011-01-24 2 views
2

확장자를 개발 중입니다. 선택한 텍스트이 WEBMAIL, GOOGLE DOCS 등 편집 가능한 영역에 있는지 확인하고 싶으면 해당 텍스트를 수정할 수 있도록 상황에 맞는 메뉴의 일부 항목을 사용할 수 있습니다. 이러한 편집 가능한 텍스트 영역이 특정 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);

감사합니다. Alex!

답변

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은 밑줄, 기울임 꼴, 굵게, 범위입니다. 나는이 노드들을 허용하고 편집 가능한 텍스트로 가장 할 수있는 것들을 필터링했다.

희망이 있으면 도움이 될 것입니다.

관련 문제