gpt4 book ai didi

javascript - 如何为输入元素添加原型(prototype)?

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:24 24 4
gpt4 key购买 nike

我有一个输入元素:

<input type="text" id="t" value="abcdefghij" />

我想创建一个 selectionStart

document.getElementById("t").selectionStart

我需要的功能是:

function GetSelectionStart(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveEnd('character', o.value.length)
if (r.text == '') return o.value.length
return o.value.lastIndexOf(r.text)
} else return o.selectionStart;
}

function GetSelectionEnd(o) {
if (o.createTextRange) {
var r = document.selection.createRange().duplicate()
r.moveStart('character', -o.value.length)
return r.text.length
} else return o.selectionEnd;
}

如何将此“属性”添加到 <input type="text" />在 IE 上?可能吗?

最佳答案

首先,尝试扩展宿主对象在原则上和实践中都是一个坏主意。诸如 DOM 元素之类的宿主对象几乎可以为所欲为;特别是,他们没有义务支持您尝试做的事情,并且在 IE <= 8 中,这是您使用此代码的目标,DOM 元素根本不支持这一点。您的选择是使用您将输入元素传递给的函数,或者为每个具有您需要的方法和属性的输入创建一个包装器对象。

其次,您的 GetSelectionStart()GetSelectionEnd() 函数存在缺陷:它们无法正确处理文本区域中的新行,并且围绕 lastIndexOf< 的逻辑存在错误(如果所选文本在输入中出现多次怎么办?)。我在这方面做了很多工作,并且提出了我相当确信的是在所有主要浏览器中获取输入和文本区域选择的最佳功能,我几天前最后一次在这里发布: Is it possible to programmatically detect the caret position within a <input type=text> element?

关于javascript - 如何为输入元素添加原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com