Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> JavaScript -> JavaScript Selections (работа с выделениями)


Меж-браузерная работа с выделениями.

Теперь вы знаете, как работать с выделениями в Navigator 4.0x (с помощью метода GetSelection()) и Internet Exporer (с помощью объекта TextRange), теперь самое время поговорить о ее меж-броузерном исполнении. Вообще говоря, Navigator 4.0x поддерживает метод document.getSelection(), в то время как Internet Explorer 4.0x поддерживает объект document.selection. По этому простейший способ определения объекта выглядит так:

if (document.getSelection) {
  // the Navigator 4.0x code
} else if (document.selection) {
  // the Internet Explorer 4.0x code
} else {
  // the alternative code
}

При попытке получит текущее выделение (это единственное, что вы можете сделать в Navigator 4.0x) вы должны создать объект TextRange (Internet Explorer 4.0x). Но не все версии Inernet Explorer 4.0x поддерживают объект TextRange. Например, Mac версия Internet Explorer 4.0x не поддерживает текстовые области, хотя он и поддерживает объект document.selection(). По этому мы будем использовать логический оператор AND, для проверки того, поддерживается ли метод document.selection.createRange(). Оператор AND необходим, потому что гарантирует, что браузер не будет проверять document.selection.createRange, если ее родительский объект (document.selection) не поддерживается. По этому, скрипт, который возвращает текущее выделение должен иметь следующую структуру:

if (document.getSelection) {
  // the Navigator 4.0x code
} else if (document.selection && document.selection.createRange) {
  // the Internet Explorer 4.0x code
} else {
  // the alternative code
}

Следующий пример отоброжает текущее выделение в поле ввода:

<FORM NAME="myForm">
<TEXTAREA NAME="myArea" COLS="40" ROWS="4"></TEXTAREA>
</FORM>

<SCRIPT LANGUAGE="JavaScript">
<!--

function display() {
  if (document.getSelection) {
    var str = document.getSelection();
  } else if (document.selection && document.selection.createRange) {
    var range = document.selection.createRange();
    var str = range.text;
  } else {
    var str = "Sorry, this is not possible with your browser.";
  }
  document.myForm.myArea.value = str;
}

if (window.Event)
  document.captureEvents(Event.MOUSEUP);
document.onmouseup = display;

// -->
</SCRIPT>

Мы объяснили цель этого скрипта в предыдущем разделе. Его единственное отличие - это то, что он является меж-браузерной версией, которая работает в Win32 версиях Internet Explorer 4.0x, а также во всех версиях Navigator 4.0x. Просто выберите часть этого документа, и она появится в этом поле ввода:

Если у вас есть доступ к обоим браузерам, вы могли заметить, что в Internet Explorer 4.0x, в отличие от Navigator 4.0x, не влияет на размещение страницы. Например, он не вставляет пробелы, когда текст выровнен с помощью blockquote. Так как эта содержимео этой страницы отформатировано, мы будем использовать регулярные выражения, чтобы избавиться от лишних пробелов, как объяснено в начале статьи. Вот - законченный код:

<FORM NAME="myForm">
<TEXTAREA NAME="myArea" COLS="40" ROWS="4"></TEXTAREA>
</FORM>

<SCRIPT LANGUAGE="JavaScript">
<!--

function display() {
  if (document.getSelection) {
    var str = document.getSelection();
    if (window.RegExp) {
      var regstr = unescape("%20%20%20%20%20");
      var regexp = new RegExp(regstr, "g");
      str = str.replace(regexp, "");
    }
  } else if (document.selection && document.selection.createRange) {
    var range = document.selection.createRange();
    var str = range.text;
  } else {
    var str = "Sorry, this is not possible with your browser.";
  }
  document.myForm.myArea.value = str;
}

if (window.Event)
  document.captureEvents(Event.MOUSEUP);
document.onmouseup = display;

// -->
</SCRIPT>

Другая вещь, на которую стоит обратить внимание, это то, что Internet Explorer не вставляет перенос строки и возврат каретки в том месте страницы, где текст переносится на новую строчку.

Назад | Оглавление


 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.