我有两个自定义上下文菜单(一个是我写的,另一个是已经存在)。只有当一个单词被加下划线时才出现,因为他写得不好而另一个出现在桌子上,所以用户可以选择添加另一行或从该表中删除一行。
我遇到的麻烦是,如果表格中存在错误并且您想要更正它,那么在桌面上工作的人会阻止我执行。
对于这个contextMenu,他们编写它,这样他们就可以从右键单击的地方获得一个范围对象。
document.oncontextmenu = elementSelect;
function elementSelect(){
Rng = document.selection.createRange();
}
我试图在范围对象中获取标记的className,所以如果它与我的错误标记中的类匹配(带有class =&#34的范围;错误"),我会做一个简单的在表的contextMenu中返回,因此它不会触发。
var rngClassName = Rng(0).getAttribute("class").value;
alert("class =>" + rngClassName);
if(rngClassName == "error")
{
return;
}
多次使用Rng(0)来检索somme属性并为它们正常工作。但似乎它不能获取类值,没有值返回,脚本在行var rngClassName = Rng(0).getAttribute("class").value;
停止执行,并且没有从调试返回错误(IE中的F12)。
这是我第一次使用Range对象,所以我觉得我错过了一些东西,但不知道是什么。
规格:IE5,Vanilla Javascript。
答案 0 :(得分:0)
尝试使用element.classList。
使用以下方法:classList.add(),classList.remove(),classList.contains()
答案 1 :(得分:0)
编辑:我现在看到您的评论,以下内容在IE5中无效...
但是,如果我正确理解你的问题,你想检查选择中元素的类吗?我没有IE5所以我在11和Chrome中检查了它。你可以尝试这样的事情:
var selection = document.getSelection();
var selRange = selection.getRangeAt(0);
var parentNode = selRange.startContainer.parentNode;
var hasError = parentNode.classList.contains('error');
演示:https://jsfiddle.net/spdwn7bo/1/(在2秒内选择文字:))