JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Следует отметить, что объект

Document
поддерживает также метод
writeln,
который идентичен методу
write,
за исключением того, что он добавляет символ перевода строки после вывода своих аргументов. Это может пригодиться, например, при выводе форматированного текста внутри элемента
<рге>
.

Метод

document.write
редко используется в современных сценариях: свойство
innerHTML
и другие приемы, поддерживаемые моделью DOM, обеспечивают более удачные способы добавления содержимого в документ. С другой стороны, некоторые алгоритмы лучше укладываются в схему потокового ввода/вывода, реализуемую методом
write.
Если вы создаете сценарий, который динамически генерирует и выводит текст в процессе своего выполнения, вам, возможно, будет интересно ознакомиться с примером 15.10, в котором свойство
innerHTML
указанного элемента обертывается простыми методами
write
и
close.

Пример 15.10. Интерфейс потоков ввода-вывода к свойству innerHTML

// Определить простейший интерфейс "потоков ввода/вывода” для свойства innerHTML элемента

function ElementStream(elt) {

if (typeof elt === "string”) elt = document.getElementByld(elt);

this.elt = elt; this.buffer = "”;

}

// Объединяет все аргументы и добавляет в буфер

ElementStream.prototype.write = function {

this.buffer += Array.prototype.join.call(arguments,

};

// To же, что и write, но добавляет символ перевода строки

ElementStream.prototype.writeln = function {

this.buffer += Array.prototype.join.call(arguments, "") + "\n";

};

// Переносит содержимое буфера в элемент и очищает буфер.

ElementStream.prototype.close = function {

this.elt.innerHTML = this.buffer; this.buffer = "";

};

15.10.3. Получение выделенного текста

Иногда удобно иметь возможность определять, какой участок текста документа выделен пользователем. Сделать это можно, как показано ниже:

function getSelectedText {

if (window.getSelection) // Функция, определяемая стандартом HTML5

return window.getSelection.toString;

else

if (document.selection) // Прием, характерный для IE.

return document.selection.createRange.text;

}

Стандартный метод

window.getSelection
возвращает объект
Selection
, описывающий текущий выделенный текст, как последовательность одного или более объектов
Range
. Объекты
Selection
и
Range
определяют чрезвычайно сложный прикладной интерфейс, который практически не используется и не описывается в этой книге. Наиболее важной и широко реализованной (везде, кроме IE) особенностью объекта
Selection
является его метод
toString,
который возвращает простое текстовое содержимое выделенной области.

Броузер IE определяет иной прикладной интерфейс, который не описывается в этой книге. Метод

document.selection
возвращает объект, представляющий выделенную область. Метод
createRange
этого объекта возвращает реализованный только в IE объект
TextRange
, свойство
text
которого содержит выделенный текст.

Прием, подобный приведенному в примере выше, в частности, может пригодиться в букмарклетах (раздел 13.2.5.1) для организации поиска выделенного текста в поисковых системах или на сайте. Так, следующая HTML-ссылка пытается отыскать текущий выделенный фрагмент текста в Википедии. Если поместить в закладку эту ссылку и URL-адрес со спецификатором javascript:, закладка превратится в букмарклет:

<а href="#"text_code"> if (window.getSelection)

q = window.getSelection.toString;

else

if (document.selection)

q = document.selection.createRange.text;

void window.open(' http://ru.wikipedia.org/wiki/' + q);">

  • Читать дальше
  • 1
  • ...
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Моя полка

  • Моя полка

Связаться

  • help@private-bookers.win