有了这个,我想改变文档的默认选择行为。我使用getElmentsByTagName
为文档正文执行此操作。但是代码实际上没有达到预期的效果,即阻止用户单击以选择文档中的文本。
<script>
$(document).ready ( function () {
document.getElementsByTagName("body").addEventListener('mousedown', function(e) { e.preventDefault(); }, false);
});
</script>
这适用于我网站上的其他位置,以防止在特定页面元素上进行选择。我如何为整个文档执行此操作?
答案 0 :(得分:0)
你的功能有错字。当您使用getElementsByTagName选择元素时,即使页面上只有一个元素,您实际上也会收到一个集合。因此,使用[0]表示您希望在集合中返回第一个body元素:
document.getElementsByTagName("body")[0].
addEventListener('mousedown',
function(e) {
e.preventDefault();
}, false);
这当然会阻止文本被选中,以便解决您的问题。
更新:
我刚才意识到你不需要禁用点击锚标签,但我会将此留给那些想要禁用这些点击的用户。
但是,为了防止点击链接,您必须使用其他方法:
// bind click event to parent elements of anchor tags,
// or it won't work properly
$('a').parent().each(function() {
$(this).attr("href","#");
$(this).unbind();
$(this).click(function() {
event.preventDefault();
return false;
});
});
答案 1 :(得分:0)
$(document).ready ( function () {
$(document).on('mousedown', function(e) {
e.preventDefault();
});
});
答案 2 :(得分:0)
发现我也可以用CSS做到这一点。
<style>
*:not(input) {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>