我正在使用一个名为disableSelection的JavaScript函数来阻止对特定元素的文本选择。此功能声明如下:
function disableSelection(target)
{
if (typeof target.onselectstart!="undefined") //IE route
target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
target.style.MozUserSelect="none"
else //All other route (ie: Opera)
target.onmousedown=function(){return false}
target.style.cursor = "default"
}
我想禁用除表单元素之外的整个页面上的文本选择。如果我调用disableSelection(document.body),它将完成这项工作,但它也会禁用表单元素上的文本选择(但这只发生在Firefox上)。
我的问题是如何防止表单字段受到此文本禁用程序脚本的影响?我可以标记除表单字段之外的所有内容,但这需要付出很多努力。
我会对此表示感谢。
注意:我从here找到了disableSelection脚本。
答案 0 :(得分:0)
通过从事件返回false,您将禁用浏览器的默认行为(选择文本)。我会这样修改这个函数;
function disableSelection(target, enable)
{
if (typeof target.onselectstart!="undefined") //IE route
target.onselectstart=function(){return enable}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
target.style.MozUserSelect=enable?"all":"none";
else //All other route (ie: Opera)
target.onmousedown=function(){return enable}
target.style.cursor = "default"
}
然后把它叫做你的东西;
disableSelection(document.body, false);
disableSelection(document.forms[0], true);
应该工作(没有测试)
答案 1 :(得分:0)
脚本必须位于<body>
标记下。如果你想只让div禁用:disableSelection(document.getElementById('divName'))
答案 2 :(得分:0)
这适用于我,仅在chrome中测试过:
function enableSelection(target) {
//For IE This code will work
if(typeof target.onselectstart != "undefined") {
target.onselectstart = function() {
return true;
}
}
//For Firefox This code will work
else if(typeof target.style.MozUserSelect != "undefined") {
target.style.MozUserSelect = "all";
}
//All other (ie: Opera) This code will work
else {
target.onmousedown = function() {
return true;
}
target.style.cursor = "default";
}
}