我正在开发 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);
谢谢你, 亚历!
答案 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是下划线,斜体,粗体,跨度。我允许这些节点并过滤那些可能伪装成可编辑文本的节点。
希望这会帮助别人!