(function() { function myName(){ return "myContextMenu"; } function hideMyContextMenu() { var d = document.getElementById(myName()); if (d) { d.style.display = "none"; } } function showSystemContextMenu(id) { var element = document.getElementById(id); if (element) { element.skipMe = 1; } ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 2, null); element.dispatchEvent(ev); return; if (window.CustomEvent) { element.dispatchEvent(new CustomEvent('contextmenu')); } else if (document.createEvent) { var ev = document.createEvent('HTMLEvents'); ev.initEvent('contextmenu', true, false); element.dispatchEvent(ev); } else { // Internet Explorer element.fireEvent('oncontextmenu'); } } function hasDesiredParent(element){ var p = element; var tid = ""; var hasDesiredParent = false; while ((p) && (!hasDesiredParent)) { if (p.id) { if (p.id.indexOf("_short") > -1) { hasDesiredParent = true; tid = p.id; } if (p.id.indexOf("_long") > -1) { hasDesiredParent = true; tid = p.id; } } if (p.className) { if (p.className.indexOf("story_title") > -1) { hasDesiredParent = true; tid = p.id; } } p = p.parentNode; } return hasDesiredParent; } function createButton(label){ var b = document.createElement('button'); b.innerHTML = label; return b; } function addTheButtons(target){ var b1 = createButton('obe'); b1.addEventListener('click', function (e){ rss_show_obe(e.target); hideMyContextMenu(); }); var b2 = createButton('copy'); b2.addEventListener('click', function (e){ document.execCommand('copy'); hideMyContextMenu(); }); target.appendChild(b1); target.appendChild(b2); } function getMyDiv(){ var d = document.getElementById(myName()); if (!d) { d = document.createElement("div"); d.id = myName(); d.style.position = "absolute"; addTheButtons(d); document.body.appendChild(d); } return d; } function showMyDiv(e){ var d = getMyDiv(); d.style.display = ""; d.style.left = e.pageX + 'px'; d.style.top = e.pageY + 'px'; //d.style.width = "100px"; //d.style.height = "100px"; } function checkContextMenu(e) { if (!e.target) { //how did this happen? return ; }; if (e.target.skipMe) { e.target.skipMe--; return; } if (!hasDesiredParent(e.target)) { return; } var sel = window.getSelection().toString(); if (sel) { e.preventDefault(); e.stopPropagation(); showMyDiv(e); } else { // no selection } }; var i = setInterval(function() { if (!$) { //wait for jquery return; } clearInterval(i); $(document).on("contextmenu", function (e){ checkContextMenu(e); }); $(document).on("click", function (e){ hideMyContextMenu(e); }); }, 1000); })();