mouseup事件后禁用jQuery contextMenu
Disabled jQuery contextMenu after a mouseup-event
在jQuery中使用自定义文本选择函数时,我的contextMenu事件将被禁用。
最小的工作示例,使用javascript和html文件(javascript的数量比看起来少):
var markFeature = {
getSelected: function(){
var t = '';
if(window.getSelection)
t = window.getSelection();
else if(document.getSelection)
t = document.getSelection();
else if(document.selection)
t = document.selection.creatRange().text;
return t;
},
applyHighlight: function(){
var st = markFeature.getSelected();
if(st!='')
{
var str1 = '<span style="background-color:#00E000">';
var replacement = str1.concat(st,"</span>");
var _st = new RegExp(st, "g");
var replaced = $("body").html().replace(_st, replacement);
$("body").html(replaced);
}
},
register_contextMenu: function(){
//markFeature.addCSS();
$.contextMenu({
selector: '*',
items: {
"item1": {name: "item-1"},
"item2": {name:"item-2"},
}
});
},
init: function(){
$(document).bind("mouseup", markFeature.applyHighlight);
}
};
$(document).ready(markFeature.register_contextMenu);
$(document).ready(markFeature.init);
<link href="http://medialize.github.io/jQuery-contextMenu/src/jquery.contextMenu.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://medialize.github.io/jQuery-contextMenu/src/jquery.contextMenu.js"></script>
<strong>Right-Click ME!</strong>
请忽略一个小错误:有时它会在选择后添加文本。
所以我的问题是:在选择之后,我无法使用contextMenu。
RegEx搜索body标记和body标记中的所有HTML。上下文菜单的HTML是由body标记中的contextMenuJS添加的,因此它会被更改和中断。
我删除了getSelected
和RegEx。我用Rangy的一个改编示例替换了这些:
<script src="http://rangy.googlecode.com/svn/trunk/currentrelease/rangy-core.js"></script>
<script src="http://rangy.googlecode.com/svn/trunk/currentrelease/rangy-cssclassapplier.js"></script>
<style type="text/css">
.highLight {
background-color: #00E000;
}
</style>
<script>
var cssApplier, markFeature;
window.onload = function() {
rangy.init();
cssApplier = rangy.createCssClassApplier("highLight", {
normalize: true
});
};
$(this).on("mouseup", function() {
cssApplier.applyToSelection();
});
markFeature = {
register_contextMenu: function() {
$.contextMenu({
selector: "*",
items: {
item1: {
name: "item-1"
},
item2: {
name: "item-2"
}
}
});
},
init: function() {
$(document).bind("mouseup", markFeature.applyHighlight);
}
};
$(document).ready(markFeature.register_contextMenu);
$(document).ready(markFeature.init);
</script>
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何使用jQuery自动打开页面上的所有链接
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery:循环一个具有不同超时值的循环
- 用程序搜索JQuery数据表中的文本
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jQuery匹配JSON对象的部分文本
- Jquery POST未填充数组
- JQuery使计数器每次更改时都会增加
- 如何在Angular2中使用jQuery插件
- 提高JQuery的性能
- 无法在通过jQuery的ajax加载的页面中执行javascript
- jQuery ContextMenu事件在IOS 8.2中不起作用
- 在jQuery的contextMenu插件中定义图标
- mouseup事件后禁用jQuery contextMenu
- Jquery contextMenu插件无法接受默认选择
- 是否有可能将Jcrop与jQuery contextMenu结合使用?
- 2 jQuery.具有不同触发器的页面上的contextMenu
- RequireJS JQuery ContextMenu issues
- 获取在JQuery ContextMenu中单击的选择器的类名