Хорошо, после того, как я закончил, я действительно хотел получить ответ. Так что на самом деле я нашел идеальное решение своей проблемы. Не очень хорошее и прямое решение, а скорее обходной путь, который работает в моей конкретной ситуации.
Решение заключается в том, что каретка НЕ отображается в IE, когда она находится в переполнении элемента, а переполнение установлено на скрытый. Таким образом, если у вас есть:
<div style="overflow: hidden;position: relative;">
<input type="text" style="position: absolute;top: -30px;" />
</div>
Если на входе есть фокус (путем переключения между фокусируемыми элементами), вы увидите, что каретка не отображается. Таким образом, решение состоит в том, чтобы сделать элемент ввода, например, height: 60px;
и установить top: -30px;
. Теперь вы все еще можете нажать на невидимый ввод, но каретка скрывается где-то в переполнении.
Но теперь возникает новая проблема. Вы не можете выделить текст на входе, если вы не выделяете его в самой строке. Итак, мне пришлось сделать немного неприятный javascript в нем, чтобы, если я сделаю onmousedown на входе, входная информация изменится на top: 0px;height: 30px;
, и наоборот на событие onmouseup. Это можно сделать безопасно, так как при выделении текста никакой каретки не существует.
Я протестировал это решение как в FF, так и в IE8, и теперь все работает отлично. Теперь я выложил все это в Интернете: https://jsfiddle.net/90L5jme6/. Вы можете увидеть, как работает механизм выбора, установив непрозрачность входа на 0,2 и установив видимый переполнение контейнера ввода.