Javascript document.all и document.getSelection - альтернатива Firefox - PullRequest
1 голос
/ 15 апреля 2009

Сценарий ниже заменит выбранное слово в текстовой области. Но это работает только на IE. Есть идеи, как заставить его работать на Firefox? (Проблема, кажется, заключается в (document.all)? Document.selection.createRange (): document.getSelection ();)

<SCRIPT LANGUAGE="JavaScript">
    <!--//
    var seltext = null;
    var repltext = null;
    function replaceit() 
    {
        seltext = (document.all)? document.selection.createRange() : document.getSelection();
        var selit = (document.all)? document.selection.createRange().text : document.getSelection();
        if (selit.length>=1){
            if (seltext) {
                repltext= prompt('Please enter the word to replace:', ' '); 
                if ((repltext==' ')||(repltext==null)) repltext=seltext.text;
                seltext.text = repltext;
                window.focus()
            }
        }
    }
    //-->
</SCRIPT>
</HEAD>
<BODY>
    <form name="f">
        <textarea cols='40' rows='10' name='msg'></textarea>

        <input type="button" name="b" value="Replace" onClick="replaceit();">
    </form>
</BODY>

Ответы [ 4 ]

2 голосов
/ 15 апреля 2009

Бит document.all используется в качестве теста для проверки, является ли он IE или нет. То, как написано document.getSelection (), - то, что будет использоваться в Firefox и document.selection.createRange () в IE

См http://www.hscripts.com/tutorials/javascript/ternary.php

Так что проблема не в document.all, а в том, что getSelection () не работает. Не уверен, почему именно так, как это не является конструкцией, которую я использовал недавно, но попробуйте window.getSelection () согласно этому: (и Google для других, если это не помогает) http://www.webdeveloper.com/forum/archive/index.php/t-138944.html

1 голос
/ 15 апреля 2009

ОК, поэтому document.getSelection() возвращает строку в FF. String :: text не существует. Так что вы не можете установить это.

Базовое представление о том, что вам нужно сделать (и это будет работать в обоих браузерах):

Получите текстовую область по ее id - вам нужно установить атрибут id для текстовой области. Получить начальную и конечную позиции выбора. Затем возьмите три подстроки: 0-> start, start-> end, end-> string.length. Замените среднюю подстроку тем, что они вставили в подсказку. Установите text текстовой области для вновь сформированной строки.

Точное, как вам решать, я просто дал вам представление о процедуре.

0 голосов
/ 18 июня 2011

Window.getSelection - это метод, который делает объект DOMSelection доступным в Firefox. Возможно, это то, что вы ищете.

0 голосов
/ 03 декабря 2009

Моя книга фламинго О'Рейли в работе, но я, кажется, помню, что чтение document.getSelection () специально не работает с элементами textarea, только с «не редактируемыми» частями страницы.

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