我正在创建一个 Chrome 扩展。
每当您选择文本时,我都会在所选内容旁边的网页上添加两个按钮。
如果选择位于文本区域或输入框中,我不希望发生任何操作。
这是我当前使用的代码
$(document).on("mouseup", function(e) {
var class1=e.target.nodeName;
var class2=e.target.firstChild;
console.log(class1);
console.log(class2);
if(class1=="INPUT" || class1=="TEXTAREA"){
}
else{
var selectedtext=window.getSelection().toString();
var chars=selectedtext.length;
if(chars>2){
var posx=e.clientX;
var posy=e.clientY;
var scrollDepth=$(window).scrollTop();
posy=posy+scrollDepth;
var location=findSelectionCoords(posx,posy);
create_Button(location);
}
}
});
创建按钮函数用于创建按钮。
如果用户在文本区域/输入框中选择一些文本,此功能将起作用,控制台将显示输入/文本区域。 但有时文本区域或输入框也会被选中,然后此功能会失败。在 class1 中,在本例中我得到 DiV。
有人可以建议一种在所有情况下都有效的函数,并检测文本选择是否位于输入或文本区域内
提前致谢
最佳答案
以下是示例代码,其中仅当 mouseup
事件来自非 textarea
或 input
的元素时才会显示警报消息> 文本类型。
编辑代码:
$(function() {
var isInputOrTextarea = false;
$(document).on("mousedown", function(e) {
// On mousedown flag whether it was clicked in input or textarea
if($(e.target).is("textarea,input[type=text]")) {
isInputOrTextarea = true;
}
});
$(document).on("mouseup", function(e) {
if($(e.target).is("textarea,input[type=text]") || isInputOrTextarea) {
isInputOrTextarea = false;
return;
}
isInputOrTextarea = false;
alert("Not in text area or input");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" value="Lorem ipsum"/>
<textarea>
Lorem ipsum
</textarea>
<p>
Lorem ipsum
</p>
关于javascript - 查明所选文本是否位于输入字段或文本区域内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760345/