Juri Shutenko Personal Homepage. Visual FoxPro.

C HTML на короткой ноге... Часть 2

Итак, в первой части я показал небольшой пример, который создает простенький отчет из таблицы базы данных, используя ее аттрибуты. Займемся теперь более глубоким изучением htlm-документа, чтобы грамотно стоить большие комплексные отчеты, создание которых в Visual FoxPro либо потребует больших ресурсов времени, либо просто невозможно. Если обратиться к первым трем строкам кода, приведенного в начале первой части, то там, в третьей строке мы получили ссылку на собственно документ, который представляет собой дерево html-документа. Как и все объекты, он имеет свои свойства, методы и события, описания которых приведены ниже в таблице.

Свойство, событие, методОписание
activeElementВозвращает объект, который имеет фокус, когда родительский документ имеет фокус.
alinkColor

Устанавливает или возвращает цвет всех активных ссылок в документе.

Если для документа не был установлен псевдо-класс active. то возвращается цвет ссылок, используемый браузером по умолчанию. Если мы создадим простенький документ вида (назовем его domdocument1.htm для использования в примерах статьи):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Testing Properties, Methods and Events HTML Document </TITLE>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
<META NAME="Author" CONTENT="Juri Shutenko">
<META NAME="Keywords" CONTENT="Visual FoxPro plus HTML">
<META NAME="Description" CONTENT="HTML Tutorial">

</HEAD>
<BODY>
<p>Текст 1</p>
<p>Текст 2</p>
<p><a name="text3">Текст 3</a></p>
<p>Текст 4</p>
<p><a href="#text3">Ссылка на текст 3</a></p>
</BODY>
</HTML>

Например, при обращении к свойству alinkColor такого документа будет возвращено "#0000ff", то есть яркосиний цвет.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
? loDocument.alinkColor && возвратит строку #0000ff
all

Возвратит объектную ссылку на коллекцию, индексируемую на 0-основе (то есть первый элемент имеет индекс 0) и содержащую все элементы в HTML-документе.

Если мы выполним приведенный ниже примерный код для документа приведенного выше, то в результате получим ссылку на объект коллекции документов и при обращении к его свойству length получим число 16 (целочисленный тип данных), а при получении объектной ссылки на объект с индексом 3 (то есть реальный четвертый объект документа) и обращении к его свойству nodeName получим имя тэга - Title

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
loAll=loDocument.all
? loAll
? loAll.length && возвратит 16
loObject=loAll.item(3)
? loObject.nodeName && возвратит TITLE (всегда в верхнем регистре)
anchors

Возвращает объектную ссылку на коллекцию всех якорей, содержащихся в HTML документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

Если мы выполним приведенный ниже примерный код для документа приведенного выше, то в результате получим ссылку на объект коллекции якорей и при обращении к его свойству length получим число 1 (целочисленный тип данных), а при получении объектной ссылки на объект с индексом 0 (то есть реальный первый якорь объект документа) и обращении к его свойству outerHTMLnodeName получим полный html текст якоря - <a name="text3">Текст 3</a>

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
loAnchors=loDocument.anchors
? loAnchors
? loAnchors.length
loAnchor=loAnchors.item(0)
? loAnchor.outerHTML && возвратит <a name="text3">Текст 3</a>
applets

Возвращает объектную ссылку на коллекцию всех апплетов, содержащихся в HTML документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

bgColorУстарело. Устанавливает или возвращает цвет фона/задника, за объектом.
body

Возвращает ссылку на объект body.

Если мы выполним приведенный ниже примерный код для документа приведенного выше, то в результате получим число дочерних элементов для узла body. Отметьте себе, что сюда вошли только элементы "параграф", поскольку только они и являются дочерними элементами. Элементы якорей являются дочерними элементами параграфов, а посему не учитываются.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
loBody=loDocument.body
? loBody
? loBody.children.length && вернет число 5 (целочисленный тип данных)

charset

Устанавливает или возвращает ссылку на кодовую страницу, используемую при кодировке документа.

Если мы выполним приведенный ниже примерный код для документа приведенного выше, то в результате получим указанную в мета-тэге http-equiv="Content-type" кодировку

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
? loDocument.charset && вернет windows-1251 (символьный тип данных)

clear

Пока не поддерживается.

close

Закрывает выходной поток и принуждает посылку данных на display

cookie

Устанавливает или возвращает строку, содержащую значение cookie.

Следует использовать с учетом того, что на компьютере клиента cookie могут быть запрещены

createElement

Создает инстанцию элемента указанного тэга.

Это один из основных способов создания элементов в html-документе.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
loNewElement=loDocument.createElement("p")
loDocument.body.appendChild(loNewElement)
? loContent.outerHTML
? loDocument.body.outerHTML 
* пустая пара <P></P> добавлена в конец документа

createStyleSheet

Создает таблицу стилей для документа.

В описании этого метода в Microsoft Platform SDK есть некоторая неточность. Метод принимает два параметра - URL и индекс. Естественно, что в качестве первого параметра передается имя файла таблицы стилей. Однако, в описании сказано, что в случае, если URL не представляет из себя имени файлов, то будет добавлена информация о стилях и получена ссылка на объект Style. Увы! Это слегка не соответствует действительности. Выполните приведенный ниже код:

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument1.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
loDocument.createStylesheet("th {color:#ff0000;font-size:12pt !important}")
CLEAR
? loContent.outerHTML

В результате его исполнения мы получим следующее:

Result of the code execution

defaultCharset

Возвращает кодовую страницы, используемую по умолчнию из текущих региональных установок языка.

Не всегда - даже если создать новый объект приложения, удалить все пометки о кодировке и установить совершенно другую кодироваку - все равно иногда проявляется несоответствие. Причины пока выяснить не удалось...

designMode

Устанавливает или возвращает значение, которое показывает, может-ли документ редактироваться или нет.

По умолчанию, обращение к этому защищенному свойству возвращает - inherit (off). Если вы установите это свойство в ON, то текст документа станет доступным в браузере,

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument2.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
loDocument.designMode='on'
? loDocument.designMode
loInetApp.visible=.T.

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

Warning Dialog Box

domain

устанавливает или возвращает установку безопасности домена для документа.

elementFromPoint

Возвращает элемент, находящийся в указанных координатах x и y.

embeds

Возвращает объектную ссылку на коллекцию всех вложенных объектов, содержащихся в HTML документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

execCommand

Исполняет команду на текущем документе, текущей выборке или данном диапазоне.

Ниже приведен список поддерживаемых исполняемых команд, описание которых смотрите в одной из последующих частей.
 
2D-Position, AbsolutePosition, BackColor, Bold, ClearAuthenticationCache, Copy, CreateBookmark, CreateLink, Cut, Delete, FontName, FontSize, ForeColor, FormatBlock, Indent, InsertButton, InsertFieldset, InsertHorizontalRule, InsertIFrame, InsertImage, InsertInputButton, InsertInputCheckbox, InsertInputFileUpload, InsertInputHidden, InsertInputImage, InsertInputPassword, InsertInputRadio, InsertInputReset ,InsertInputSubmit, InsertInputText, InsertMarquee, InsertOrderedList, InsertParagraph, InsertSelectDropdown, InsertSelectListbox, InsertTextArea, InsertUnorderedList, Italic, JustifyCenter, JustifyFull, JustifyLeft, JustifyRight, LiveResize, MultipleSelection, Outdent, OverWrite, Paste, Print, Refresh, RemoveFormat, SaveAs, SelectAll, UnBookmark, Underline, Unlink, Unselect.

execCommandShowHelp

Отображает информацию подсказку для данного идентификатора команды.

expando

Устанавливает или возвращает значение, определяющую - могут ли быть созданы произвольные переменные внутри объекта.

fgColor

Устанавливает или возвращает цвет текста документа.

Установке нового цвета, для текста документа, может помещать ключ !important, установленный для цвета текста документа в применной таблице стилей, которая запрещает изменять установки, определенные разработчиком страницы. То есть, несмотря на то, что вы в настройках своего браузера можете использовать свои собственные схемы, те свойства селекторов CSS, в том числе и цвет, для которых установлено !important не могут быть изменены.

fileCreatedDate

Возвращает дату создания файла.

Здесь могут некоторые проблемы, связанные с разными операционными системами, однако для локальных файлов возвращается дата в формате mm/dd/yyyy, то есть игнорируются установки Visual FoxPro SET DATE.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("file:///c:\JSWS2006\domdocument2.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
? loDocument.fileCreatedDate && вернет дату в формате mm/dd/yyyy
Release All

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
? loDocument.fileCreatedDate && вернет текущую дату в формате mm/dd/yyyy

fileModifiedDate

Возвращает дату последней модификации файла.

Аналогично с предыдущим свойством.

fileSize

Возвращает размер файла.

Обращение к свойству вернет размер файла в байтах.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
loDocument = loInetApp.Document
? loDocument.fileSize && в настоящий момент вернул 12423 байта
* возвращаемый тип данных - символьные!

fileUpdatedDate

Возвращает дату последнего обновления.

Здесь могут некоторые проблемы, связанные с разными операционными системами, однако эту дату возвращает правильно в формате mm/dd/yyyy, то есть игнорируются установки Visual FoxPro SET DATE.

forms

Возвращает объектную ссылку на коллекцию всех объектов форм, содержащихся в HTML документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

frames

Возвращает объектную ссылку на коллекцию всех объектов фреймов, содержащихся в HTML документе, если документ содержит объект frameSet. Если документ содержит объект body, то тогда коллекция представляет собой коллекцию объектов внутренних фреймов iframe в документе. В обоих случаях, элементы в коллекции представлены в том порядке, в каком они появились в документе.

images

Возвращает объектную ссылку на коллекцию всех объектов рисунков (images) в HTML-документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

lastModified

Возвращает дату последнего изменения документа, если страница поддерживает ее.

Здесь могут некоторые проблемы, связанные с разными операционными системами, однако эту дату возвращает правильно в формате datetime, то есть с дополненным временнОй частью. Часть, относящаяся к дате возвращается в формате mm/dd/yyyy, то есть игнорируются установки Visual FoxPro SET DATE.

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
loDocument = loInetApp.Document
loContent=loDocument.documentElement
? loDocument.lastModified && в настоящий момент вернул 03/01/2006 16:55:40
* возвращаемый тип данных - символьные!

linkColor

Устанавливает или возвращает цвет ссылок, содержащихся в документе.

links

Возвращает объектную ссылку на коллекцию всех объектов ссылок в HTML-документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

location

Возвращает объект расположения документа,:

содержащий сведения о хосте, пути и тому подобные, которые можно получить, обратившись к его свойствам:

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
loDocument = loInetApp.Document
? loDocument.location
loLocation=loDocument.location
? loLocation.hash
? loLocation.host
? loLocation.hostname
? loLocation.href
? loLocation.pathname
? loLocation.port
? loLocation.protocol

mimeType

Возвращает MIME-тип файла

В наших изучениях html-документов он будет "HTML Document"

nameProp

Возвращает титул документа, который отображается в заголовке браузера.

onafterupdate

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onafterupdate.

Мы, в основном, будем иметь дело с функциями JavaScript, и если событию присвоена функция обработчик, то будет возвращено имя этой функции. Присвоение события внутри тэга элемента выглядит следующим образом:

... onafterupdate="имя функции_обработчика_события(аргументы)..."

onbeforeupdate

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onbeforeupdate

onclick

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onclick.

ondblclick

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события ondblclick.

ondragstart

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события ondragstart.

onerrorupdate

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onerrorupdate.

onhelp

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onhelp.

onkeydown

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onkeydown.

onkeypress

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onkeypress.

onkeyup

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onkeyup.

onmousedown

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onmousedown.

onmousemove

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onmousemove.

onmouseout

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onmouseout.

onmouseover

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onmouseover.

onmouseup

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onmouseup.

onreadystatechange

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onreadystatechange.

onrowenter

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onrowenter.

onrowexit

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onrowexit.

onselectstart

Устанавливает или возвращает указатель на функцию, ассоциированную с обработчиком события onselectstart.

open

Этот метод работает двумя путями. Он открывает документ и собирает вывод в методы write and writeln. В этом случае, используются только первые два параметра: url и name. Когда указаны значения для дополнительных параметров, то метод открывает окно.

Тут есть свои тонкости, пока не будет их разбирать.

parentWindow

Возвращает ссылку на контейнер объекта родительского окна.

Если мы в скрипте открыли новое окно, то с помощью этого свойства мы получаем объектную ссылку на родительское окно, и можем использовать его элементы, функции обработчиков и прочие, которые имеет документ, открытый в родительском окне. Очень полезное свойство, позволяющее формам в разных окнах обмениваться данными, что есть предмет приложений, выполненных таким оригинальным способом (когда это выполняется с локальными файлами и на локальных машинах).

plugins

Возвращает объектную ссылку на коллекцию всех вложенных объектов - плагинов в HTML-документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

protocol

Устанавливает или возвращает протокол унифицированного локатора ресурса.

Не совсем понятно, как это может работать....

queryCommandEnabled

Возвращает логическое значение, определяющее смогут ли быть успешно выполнены идентификаторы команды execCommand, в данном текущем состоянии документа.

queryCommandIndeterm

Возвращает логическое значение, определяющее будут ли указанные команды находиться в неопределенном состоянии.

queryCommandState

Возвращает логическое значение, указывающее текущее состояние команды.

queryCommandSupported

Возвращает логическое значение, указывающее - поддерживается ли данныя команды в текущем ранге.

queryCommandText

Возвращает строку, ассоциированную с командой.

queryCommandValue

Возвращает текущее значение документа, ранга или текущего выбора для данной команды.

readyState

Возвращает значение, указывающее текущее состояние объекта.

Обязательно используется для контроля загрузки документа в объект приложения

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
Do While loInetApp.ReadyState !=4
   DoEvents
Enddo
.

referrer

Возвращает значение, указывающее URL, с которого пользователь пришел на текущую страницу.

При загрузке страницы в объект приложения обычно возвращает пустую строку.

scripts

Возвращает объектную ссылку на коллекцию всех объектов - скриптов HTML-документе. Элементы в коллекции представлены в том порядке, в каком они появились в документе.

security

Возвращает информацию о безопасности документа.

Обычно это информация о наличии или отсутствии сертификата базопасности, определенного для данного документа. Для указанного примера обращение к этому свойству должно вернуть "This type of document does not have a security certificate."

selection

Возвращает объектную ссылке на объект, представляющий активный выбор. Активным выбором может быть точка вставки курсора, подсвеченный блок текста или прочие элементы документа, на которых пользователь или скрипты могут производить определенные действия.

Очень полезное свойство, если им грамотно пользоваться!

styleSheets

Возвращает объектную ссылку на коллекцию всех таблицей стилей, содержащихся в HTML-документе. Каждый объект представляет собой представление индивидуальной стилевой таблицы, которые были определены для документа.

При использовании метода createStyelsheet в качестве второго параметра определяется индекс стилейвой таблицыю.

title

Возвращает титул документа, который отображается в заголовке браузера. Аналогично использованию nameProp.

toString

Возвращает строчное представление объекта.

Скорее всего это не совсем то, о чем вы подумали. Если метод применен к объекту, то в качестве результата вы получите строку "[object]", если к аттрибуту - "[attribute]", но никак ни сам текст документа!

URL

Устанавливает или возвращает URL для текущего документа.

Возвращает это - да, а вот устанавливает? Ну-ка, ну-ка:

loInetApp  = Createobject('InternetExplorer.Application')
loInetApp.Navigate("http://kodu.neti.ee/~juri4/vfp60/index_ru.htm")
loDocument = loInetApp.Document
loDocument.URL="file:///c:\JSWS2006\templates\index_ru.htm"

Получите и распишитесь!

Exception

vlinkColor

Устанавливает или возвращает цвет ссылок, которые уже посещал пользователь, и которые указаны в текущем документе.

write

Записывает одно (или более) HTML-выражение в документ в указанном окне.

writeln

Выполняет то же самое, что и предыдущий метод, но выражение HTML дополняется символом перевода каретки.

Ну вот, теперь все свойства, методы и события html-документа вам известны. Начинайте творить! А я пока отдохну, да примусь за корректировку следующей статьи цикла.






Cелектор для быстрого перехода на сайты, связанные с Visual FoxPro.