HTML-метод ввода текста () не работает с Chrome - PullRequest
1 голос
/ 25 сентября 2019

ВЫПУСК:

У меня есть устаревший код, работающий с IE, который я пытаюсь сделать кросс-браузерным совместимым.Одной из функций, с которыми я боролся, чтобы работать в современных браузерах (в частности, в Chrome), является функция .select () для ввода текста.В настоящее время пользователи вводят значение в поле, а затем нажимают кнопку «найти на странице», и соответствующий текст будет выделен в таблице ниже.

Internet Explorer:

Working select() functionality in IE

Google Chrome:

Broken select() in Chrome

Как видно выше, в Chrome текст неподсвечен.Приводит меня к мысли, что в Chrome поддерживается функция select () NOT .Однако согласно https://www.w3schools.com/jsref/met_text_select.asp эта функция поддерживается Chrome.

СООТВЕТСТВУЮЩИЙ КОД:

HTML Кнопка для выбора текста:

<td align="center"><input type="text" name="textSearchInput" onkeypress="if (event.keyCode == 13) {textSearch(textSearchInput.value); return false;}" size="15" maxlength="30"><button type="button" id="formSubmit2" onclick="textSearch(textSearchInput.value);"><bean:message key="fp.inventory.textSearch"/></button></td>

JavaScript для поиска и выделения, что WORKS inInternet Explorer, но НЕ работает в Chrome:

      var oRange = null;

      function textSearch(str)
      {
        if ((str == null) || (str == ''))
          return;

        if (oRange == null)
        { // first entry, or wrap search from the end
          oRange = document.body.createTextRange();
        }
        else
        { // move caret forward
          oRange.move('character', 1);
        }
        var found = oRange.findText(str);
        if (found)
        { // highlight and scroll to there
          oRange.focus();
          oRange.select();
          oRange.scrollIntoView(false);
        }
        else
        { // see if str exists at all by going backward
          found = oRange.findText(str, -1);
          if (found)
          { // wrap search
            oRange = null;
            textSearch(str);
          }
        }

Есть ли что-то еще, чего мне не хватает в этом?Я не очень хорошо разбираюсь в HTML или JavaScript, поэтому я мог упустить что-то простое ..

1 Ответ

1 голос
/ 25 сентября 2019

createTextRange не поддерживается в Chrome

http://help.dottoro.com/ljouisvm.php

Вам необходимо обнаружить браузер и использовать альтернативу.

Это может работать: https://developer.mozilla.org/en-US/docs/Web/API/Document/createRange

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...