如何仅针对特定标记/ ID重新启用RightClick

时间:2015-06-13 19:08:05

标签: javascript

我正在使用此代码:

document.oncontextmenu = (function() {
   var counter = 0;
   return function() { 
       counter++;
       if (counter == 3) {
           $("<div id='r-click'></div>").appendTo("#container").html("<span>!!! Protected content !!!</span>").fadeIn(500).show().delay(4000).fadeOut(800, function() {
           counter = 0;
       });
       }
       return false;
   };
})();

现在,我的问题是我有一个带有横幅HTML代码的textarea,我只需要上下文菜单。 是否可以编辑我使用的代码?

2 个答案:

答案 0 :(得分:1)

您需要使用event对象,该对象将传递给oncontextmenu函数。

这里是解决方案:

document.oncontextmenu = function(e) {
    var self = this;
    self.cnt = self.cnt || new(function() {
        this.counter = 0;
    });

    if (e.target.id !== "someBannerId") {
        return false;
    } else {
        self.cnt.counter++;
        if (self.cnt.counter === 3) {
            $('#r-click').remove();
            $("<div id='r-click'></div>").appendTo("#container").html("<span>!!! Protected content !!!</span>").fadeIn(500).show().delay(3000).fadeOut(800, function() {
                self.cnt.counter = 0;
            });
        }
    }
};

更新:工作示例https://jsfiddle.net/3k9kL0xr/

答案 1 :(得分:0)

这是最后的工作示例:

var counter = 0;
document.oncontextmenu = function(e) { if (e.target.id != "txt") {
    counter++;
    if (counter == 3) { 
    $("<div id='r-click'></div>").appendTo("#container").html("<span>!!! Protected content !!!</span>").fadeIn(500).show().delay(2000).fadeOut(800, function() { 
    counter = 0 });
    }
    return false; };
};

https://jsfiddle.net/t579asv5/5/