редактирование документа с использованием временной поверхности редактирования
Классы МПК: | G06F17/24 редактирование, например, вставка/удаление |
Автор(ы): | БЕЙЛИ Эрик Дана (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2009-01-21 публикация патента:
20.09.2013 |
Изобретение относится к редактированию документа с использованием временной поверхности редактирования, а именно к технологии для предоставления функциональных средств обработки текстов в обозревателе. Техническим результатом является сокращение объема необходимой памяти и повышение быстродействия. Обработка текстов реализуется согласно технологии среды выполнения для различных обозревателей и предоставляет обширный набор признаков редактирования, сопоставимых с признаками традиционных автономных текстовых процессоров. Программа обработки текстов отображает документ в окне. После обнаружения размещения указателя вставки внутри абзаца текста в документе, создается поверхность редактирования, перекрывающая абзац в окне и содержащая содержимое нижележащего абзаца. Пользовательский ввод отслеживается посредством программы обработки текстов в то время, когда редактирование содержимого обрабатывается посредством поверхности редактирования. Когда редактирование завершено, модифицированное содержимое поверхности редактирования копируется в документ, и поверхность редактирования ликвидируется. 3 н. и 14 з.п. ф-лы, 8 ил.
Формула изобретения
1. Способ редактирования текстовой части содержимого документа на языке гипертекстовой разметки (HTML) в окне Web-обозревателя, содержащий этапы, на которых:
представляют HTML-документ в окне Web-обозревателя;
принимают запрос редактировать текстовую часть содержимого HTML-документа;
в ответ на запрос определяют позицию и размер текстовой части содержимого HTML-документа при отображении в окне;
создают поверхность редактирования, перекрывающую текстовую часть содержимого HTML-документа при отображении в окне, при этом поверхность редактирования создается посредством добавления в HTML-документ HTML-элемента, имеющего атрибуты размера и позиции, которые обеспечивают отображение поверхности редактирования, при ее визуализации Web-обозревателем, в окне в упомянутой позиции и с упомянутым размером текстовой части содержимого HTML-документа;
копируют текстовую часть содержимого HTML-документа на поверхность редактирования;
принимают ввод внутри окна;
после приема ввода определяют, должна ли поверхность редактирования обрабатывать ввод;
после определения того, что поверхность редактирования должна обрабатывать ввод, передают ввод в поверхность редактирования для обработки и выполняют операцию переформатирования в отношении поверхности редактирования; и
после определения того, что поверхность редактирования не должна обрабатывать ввод, применяют любые изменения к содержимому HTML-документа, удаляют поверхность редактирования из HTML-документа и задают текстовую часть содержимого HTML-документа при отображении в окне видимой;
принимают запрос прекратить редактирование текстовой части содержимого HTML-документа; и
в ответ на прием запроса, применяют одно или более изменений к содержимому HTML-документа и ликвидируют поверхность редактирования.
2. Способ по п.1, в котором при приеме запроса редактировать текстовую часть содержимого HTML-документа:
обнаруживают размещение указателя вставки в позиции в окне и определяют текстовую часть содержимого HTML-документа, отображаемую внутри окна, в позиции указателя вставки.
3. Способ по п.2, дополнительно содержащий этапы, на которых:
после определения текстовой части содержимого HTML-документа, отображаемой внутри окна, определяют позицию символа в пределах текстовой части содержимого HTML-документа, соответствующую позиции указателя вставки; и
после создания поверхности редактирования, перекрывающей текстовую часть содержимого HTML-документа при отображении в окне, размещают курсор в позиции символа в тексте текстовой части содержимого HTML-документа в пределах поверхности редактирования.
4. Способ по п.1, в котором при размещении поверхности редактирования, перекрывающей текстовую часть содержимого HTML-документа при отображении в окне, дополнительно задают текстовую часть содержимого HTML-документа при отображении в окне невидимой.
5. Способ по п.1, в котором HTML-элемент, добавляемый в HTML-документ, является одним из HTML-элемента IFRAME, HTML-элемента DIV и HTML-элемента TEXTAREA.
6. Способ по п.1, в котором выполнение операции переформатирования в отношении поверхности редактирования содержит этапы, на которых:
определяют, необходимо ли переформатировать поверхность редактирования в окне; и
после определения того, что поверхность редактирования необходимо переформатировать, применяют одно или более изменений к содержимому HTML-документа,
предписывают Web-обозревателю повторно визуализировать документ в окне,
определяют новую позицию и новый размер текстовой части содержимого HTML-документа при отображении в окне, и
изменяют атрибуты размера и позиции HTML-элемента, добавляемого в HTML-документ, так чтобы поверхность редактирования визуализировалась Web-обозревателем в окне в новой позиции и с новым размером текстовой части содержимого HTML-документа.
7. Способ по п.1, в котором при определении того, должна ли поверхность редактирования обрабатывать ввод, определяют, являлся ли ввод результатом нажатия одной из буквенной клавиши, клавиши пунктуации и цифровой клавиши на клавиатуре.
8. Компьютерный носитель данных, на котором сохранены машиноисполняемые инструкции, которые при их исполнении компьютером предписывают компьютеру:
отображать документ на языке разметки в окне, сформированном посредством Web-обозревателя;
обнаруживать размещение указателя вставки в позиции в окне;
после обнаружения размещения указателя вставки, определять текстовую часть документа, отображаемую в окне, в позиции указателя вставки;
создавать поверхность редактирования, перекрывающую текстовую часть документа в окне, и копировать текстовую часть документа на поверхность редактирования, при этом поверхность редактирования создается посредством добавления в документ элемента на языке разметки, имеющего атрибуты размера и позиции, которые обеспечивают отображение поверхности редактирования, при ее визуализации Web-обозревателем, в окне в упомянутой позиции и с упомянутым размером текстовой части документа;
обнаруживать ввод в окне;
после обнаружения ввода в окне определять, должна ли поверхность редактирования обрабатывать ввод;
после определения того, что поверхность редактирования должна обрабатывать ввод, передавать пользовательский ввод на поверхность редактирования, чтобы обеспечивать поверхности редактирования возможность принятия изменений в отношении текстовой части документа, и выполнять операцию переформатирования поверхности редактирования;
после определения того, что поверхность редактирования не должна обрабатывать ввод, обновлять текстовую часть документа изменениями с поверхности редактирования и ликвидировать поверхность редактирования.
9. Компьютерный носитель данных по п.8, при этом создание поверхности редактирования, перекрывающей часть документа в окне, содержит:
определение текущей позиции и текущего размера текстовой части документа при отображении в окне;
определение позиции символа внутри текстовой части документа, соответствующей позиции указателя вставки;
обеспечивают визуализацию текстовой части документа Web-обозревателем как невидимой в окне;
копирование текстовой части документа на поверхность редактирования; и
позиционирование курсора в позиции символа в текстовой части документа в пределах поверхности редактирования.
10. Компьютерный носитель данных по п.9, при этом язык разметки, визуализируемый Web-обозревателем, является языком гипертекстовой разметки (HTML), и элемент языка разметки, добавляемый к документу для обеспечения визуализации Web-обозревателем поверхности редактирования, представляет собой одно из HTML-элемента IFRAME, HTML-элемента DIV и HTML-элемента TEXTAREA.
11. Компьютерный носитель данных по п.8, при этом выполнение операции переформатирования поверхности редактирования содержит:
определение того, требуется ли переформатирование поверхности редактирования в окне; и
после определения того, что переформатирование требуется, обновление части документа в окне изменениями с поверхности редактирования, предписание Web-обозревателю повторно визуализировать документ в окне, и
повторное размещение поверхности редактирования так, чтобы перекрывать текстовую часть документа в окне.
12. Компьютерный носитель данных по п.8, при этом определение того, должна ли поверхность редактирования обрабатывать ввод, содержит определение того, являлся ли ввод результатом нажатия одной из буквенной клавиши, клавиши пунктуации и цифровой клавиши на клавиатуре.
13. Способ предоставления временной поверхности редактирования в программе обработки текстов, исполняющейся в Web-обозревателе, при этом способ содержит этапы, на которых:
обнаруживают размещение указателя вставки пользователем внутри абзаца текста документа, редактируемого в программе обработки текстов;
после обнаружения размещения указателя вставки определяют позицию символа размещения указателя вставки внутри текста;
определяют текущую позицию и размер абзаца при отображении внутри страницы в окне, сформированном посредством Web-обозревателя;
создают поверхность редактирования на странице в позиции и с размером упомянутого абзаца при отображении внутри страницы, при этом поверхность редактирования создается посредством добавления элемента на языке гипертекстовой разметки (HTML) в страницу, которая должна быть визуализирована Web-обозревателем;
копируют текст на поверхность редактирования;
задают упомянутый абзац при отображении внутри страницы невидимым;
размещают курсор на поверхности редактирования в позиции символа указателя вставки;
обнаруживают пользовательский ввод внутри окна;
после обнаружения пользовательского ввода определяют, должна ли поверхность редактирования обрабатывать пользовательский ввод;
после определения того, что поверхность редактирования должна обрабатывать пользовательский ввод, передают пользовательский ввод на поверхность редактирования для обработки, определяют, необходимо ли переформатировать поверхность редактирования, и после определения того, что необходимо переформатировать поверхность редактирования, выполняют операцию переформатирования поверхности редактирования; и
после определения того, что поверхность редактирования не должна обрабатывать пользовательский ввод, обновляют упомянутый абзац на странице текстом с поверхности редактирования, задают упомянутый абзац при отображении внутри страницы видимым, ликвидируют поверхность редактирования, и передают пользовательский ввод в программу обработки текстов для обработки.
14. Способ по п.13, в котором выполнение операции переформатирования поверхности редактирования содержит этапы, на которых:
обновляют абзац на странице текстом с поверхности редактирования;
предписывают Web-обозревателю визуализировать страницу в окне;
определяют новую позицию и новый размер упомянутого абзаца при отображении внутри страницы; и
модифицируют позицию и размер поверхности редактирования на странице так, чтобы быть новой позицией и новым размером абзаца при отображении внутри страницы.
15. Способ по п.13, в котором при обнаружении пользовательского ввода внутри окна перехватывают связанные с клавиатурой и мышью события из Web-обозревателя.
16. Способ по п.13, в котором при определение того, должна ли поверхность редактирования обрабатывать пользовательский ввод, определяют, нажал или нет пользователь одну из буквенной клавиши, клавиши пунктуации или цифровой клавиши клавиатуры.
17. Способ по п.13, в котором при определении того, необходимо ли переформатировать поверхность редактирования, определяют, привела ли обработка пользовательского ввода посредством поверхности редактирования к тому, что текст в пределах поверхности редактирования, визуализируемой Web-обозревателем на странице, превышает размер поверхности редактирования.
Описание изобретения к патенту
Уровень техники
Приложения обработки текстов традиционно являются автономными программами, установленными на персональном компьютере, которые предоставляют широкие функциональные средства редактирования и форматирования для документов, сохраненных в локальных или сетевых файлах. Эти приложения, в общем, являются очень большими, требуя множества мегабайтов пространства дискового накопителя для установки. Недавняя тенденция, тем не менее, состоит в совместной разработке документов удаленно разнесенными пользователями, которые могут не иметь доступа к одним автономным приложениям обработки текстов, и при этом документы могут храниться в удаленных сетях, доступных по Интернету. Это приводит к разработке программ обработки текстов, которые могут доставляться через традиционный обозреватель для всемирной паутины ("веб-"), тем самым давая возможность редактирования удаленных документов пользователями без необходимости устанавливать традиционный автономный текстовый процессор.
Один способ предоставления веб-функциональных средств обработки текстов заключает в себе разработку веб-страниц, которые используют признаки редактирования, доступные во многих программах веб-обозревателей. Этот способ имеет преимущество простоты и быстроты и требует очень небольших затрат на проектирование и разработку. Тем не менее ограниченные признаки редактирования, предоставленные посредством этих веб-обозревателей, в общем, не могут сравниваться с возможностями обладающими множеством признаков традиционных автономных текстовых процессоров. Кроме того, доступные признаки редактирования могут варьироваться между различными программами веб-обозревателей, тем самым затрудняя предоставление согласованного взаимодействия с пользователем во всех веб-обозревателях.
Другой способ предоставления веб-функциональных средств обработки текстов состоит в том, чтобы реализовывать готовую программу обработки текстов, которая выполняется в обозревателе с использованием технологии среды выполнения для различных обозревателей, такой как JAVA от SUN MICROSYSTEMS, FLASH от ADOBE SYSTEMS или Asynchronous JavaScript и XML (AJAX). При обеспечении для разработчика полного управления признаками и характеристиками программы, этот способ, в общем, заключает в себе значительные затраты на проектирование и разработку и требует реализации функциональных средств низкоуровневого редактирования, такой как визуализация (рендеринг) текста в окне по мере набора пользователем, перемещение мигающего курсора по тексту или постоянное переформатирование содержимого окна по мере того, как пользователь набирает. Помимо этого, поскольку программа обработки текстов выполняется согласно технологии среды выполнения на основе обозревателя, она зачастую является медленной при выполнении и может не иметь возможность предоставлять надлежаще чувствительный пользовательский интерфейс.
Исходя из этих и других соображений, предоставляется раскрытие сущности, осуществленное в данном документе.
Сущность изобретения
В данном документе описаны технологии для реализации программы текстового процессора с гибридной моделью редактирования для выполнения в веб-обозревателе. В частности, программа обработки текстов реализуется согласно технологии среды выполнения для различных обозревателей и предоставляет обширный набор признаков редактирования, сопоставимых с признаками традиционных автономных текстовых процессоров. Тем не менее программа обработки текстов использует некоторые из признаков редактирования, предоставленных посредством веб-обозревателя, чтобы реализовывать функциональные средства низкоуровневого редактирования. В частности, программа обработки текстов использует веб-обозреватель, чтобы предоставлять поверхность редактирования, которая принимает изменения пользователя для отдельных блоков текста или абзацев. Поверхность редактирования является временной в том, что она является активной только по мере необходимости, чтобы предоставлять признаки низкоуровневого редактирования текстов пользователю.
Согласно одному аспекту, представленному в данном документе, документ в веб-обозревателе может быть отредактирован с использованием временной поверхности редактирования. В этом отношении, программа обработки текстов, выполняемая в веб-обозревателе, отображает документ в окне обозревателя. Программа обработки текстов обнаруживает размещение указателя вставки внутри абзаца текста в документе, к примеру, посредством щелчка пользователем мыши внутри текста или посредством использования клавиш навигации клавиатуры, чтобы переходить к абзацу. Когда размещение указателя вставки обнаруживается, программа обработки текстов создает поверхность редактирования, перекрывающую абзац в документе. Это может быть выполнено посредством добавления элемента поверхности редактирования к документу, размещаемому в местоположении и с размером, идентичными местоположению и размеру нижележащего абзаца, при одновременном задании нижележащего абзаца невидимым. В одном аспекте, элемент поверхности редактирования может быть элементом IFRAME на языке гипертекстовой разметки (HTML). Содержимое нижележащего абзаца копируется на поверхность редактирования.
Программа обработки текстов затем отслеживает пользовательский ввод в окне обозревателя, давая возможность обработки определенного ввода напрямую посредством поверхности редактирования при одновременном перехвате другого ввода для обработки посредством программы обработки текстов. Согласно одному аспекту, программа обработки текстов передает буквенную клавишу, цифровую клавишу и клавишу пунктуации, вводимую с клавиатуры, непосредственно на поверхность редактирования при одновременном перехвате щелчков мыши или клавиш навигации, таких как клавиша Page Down или клавиша Page Up. Поверхность редактирования обрабатывает пользовательский ввод, тем самым предоставляя возможность пользователю производить изменения в содержимом, содержащемся внутри.
Программа обработки текстов отслеживает поверхность редактирования, когда она обрабатывает пользовательский ввод, чтобы определять то, требуется или нет переформатирование поверхности редактирования. Например, изменения содержимого внутри поверхности редактирования могут требовать изменения размера или позиции поверхности редактирования в окне обозревателя. Если переформатирование требуется, модифицированное содержимое поверхности редактирования копируется обратно в документ, и веб-обозревателю инструктируется визуализировать документ на странице. Новая позиция и размер нижележащего абзаца затем определяются, и поверхность редактирования повторно размещается и повторно изменяется в размере, чтобы совпадать с новой позицией и размером нижележащего абзаца. Когда редактирование завершено, модифицированное содержимое поверхности редактирования копируется обратно в документ, поверхность редактирования ликвидируется, и нижележащий абзац снова задается видимым.
Следует принимать во внимание, что вышеописанный объект изобретения также может быть реализован как машиноуправляемое устройство, компьютерный процесс, вычислительная система или как изделие, такое как машиночитаемый носитель. Эти и различные другие признаки должны стать очевидными из прочтения нижеследующего подробного описания и просмотра ассоциированных чертежей.
Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерением ни то, чтобы идентифицировать ключевые признаки или важнейшие признаки заявленного объекта изобретения, ни то, чтобы быть использованной так, чтобы ограничивать объем заявленного объекта изобретения. Кроме того, заявленный объект изобретения не ограничен реализациями, которые разрешают какие-либо или все недостатки, отмеченные в любой части данного раскрытия сущности.
Краткое описание чертежей
Фиг.1 является схемой сетевой и программной архитектуры, показывающей аспекты иллюстративного операционного окружения и нескольких программных компонентов, предоставленных посредством вариантов осуществления, представленных в данном документе;
фиг.2A-2C являются схемами экрана, показывающими иллюстративный снимок экрана работы временной поверхности редактирования согласно одному варианту осуществления, описанному в данном документе;
фиг.3-5 являются блок-схемами последовательности операций, показывающими аспекты работы программы обработки текстов, предоставляющей временную поверхность редактирования, предоставленную в вариантах осуществления, описанных в данном документе; и
фиг.6 является схемой архитектуры компьютера, показывающей иллюстративную аппаратную и программную архитектуру компьютера для вычислительной системы, допускающей реализацию аспектов вариантов осуществления, представленных в данном документе.
Подробное описание изобретения
Следующее подробное описание направлено на технологии для предоставления функциональных средств обработки текстов в обозревателе. С помощью технологий и принципов, представленных в данном документе, программа обработки текстов может быть реализована в обозревателе, который предоставляет обширные возможности для обработки текстов, аналогичные возможностям традиционных автономных программ обработки текстов, без необходимости того, чтобы программа реализовывала низкоуровневые сведения управления редактированием текста. Это выполняется посредством реализации гибрида между готовой специально разработанной программой обработки текстов и признаками редактирования содержимого веб-обозревателя. Программа обработки текстов предоставляет функциональные средства высокоуровневой обработки текстов, при этом признаки редактирования веб-обозревателя используются для того, чтобы выполнять функции низкоуровневого редактирования текстов, такие как визуализация текста в окне по мере набора пользователем, перемещение мигающего курсора по тексту или постоянное переформатирование содержимого окна по мере набора пользователем. Признаки редактирования веб-обозревателя используются для того, чтобы временно размещать поверхность редактирования в окне вместо содержимого редактируемого документа. Доступная для редактирования поверхность является временной в том, что она остается видимой и активной только по мере необходимости. Когда редактирование содержимого завершено, поверхность редактирования ликвидируется, и модифицированный документ отображается пользователю.
Хотя объект изобретения, описанный в данном документе, представляется в общем контексте программных модулей, которые выполняются вместе с выполнением операционной системы и прикладных программ на компьютерной системе, специалисты в данной области техники должны признавать, что другие реализации могут быть осуществлены в комбинации с другими типами программных модулей. В общем, программные модули включают в себя алгоритмы, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Более того, специалисты в данной области техники должны принимать во внимание, что объект изобретения, описанный в данном документе, может быть реализован на практике с другими конфигурациями компьютерных систем, включающими в себя "карманные" устройства, многопроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронную аппаратуру, миникомпьютеры, мейнфреймы и т.п.
В последующем подробном описании, приводятся ссылки на прилагаемые чертежи, которые составляют часть данного документа, и которые показывают посредством иллюстраций конкретные варианты осуществления или примеры. Ссылаясь теперь на чертежи, на которых аналогичные номера представляют аналогичные элементы на нескольких чертежах, описываются аспекты вычислительной системы и технологии для редактирования документа с использованием временной поверхности редактирования.
Обращаясь теперь к фиг.1, предоставляются подробности касательно иллюстративного операционного окружения и нескольких программных компонентов, предоставленных посредством вариантов осуществления, представленных в данном документе. В частности, фиг.1 показывает аспекты системы 100 для редактирования документа с использованием временной поверхности редактирования. Система 100 включает в себя компьютер 120, содержащий стандартную систему настольного или портативного компьютера, допускающую выполнение операционной системы и одной или более прикладных программ. Компьютер 120 функционально соединен с дисплеем 104, мышью 108 и клавиатурой 110, чтобы давать возможность пользователю 102 взаимодействовать с системными и прикладными программами, выполняющимися на компьютере 120. Компьютер 120 соединен с серверным компьютером 162 через одну или более локальных и глобальных вычислительных сетей, к примеру, сеть 160. Следует принимать во внимание, что гораздо больше сетевых соединений может быть использовано, чем проиллюстрировано на фиг.1.
Компьютер 120 выполнен с возможностью запускать веб-обозреватель 122, который функционально соединен через сеть 160 с веб-сервером 164, выполняемым посредством серверного компьютера 162. В одном варианте осуществления, веб-обозреватель 122 является прикладной программой, допускающей отображение HTML-документов, такой как INTERNET EXPLORER от КОРПОРАЦИИ MICROSOFT, FIREFOX от MOZILLA или SAFARI от APPLE, INC. Тем не менее, специалисты в данной области техники должны принимать во внимание, что любой тип прикладной программы, допускающей визуализацию языка разметки и выполнение логики сценариев, может быть использован для того, чтобы осуществлять веб-обозреватель 122. Веб-сервер 164 включает в себя любую программу, допускающую обработку документов для веб-обозревателя 122. Веб-сервер 162 дополнительно соединен с хранилищем 168 данных, содержащим документы и программу 140 обработки текстов, которая описывается подробнее ниже. Согласно одному варианту осуществления, документы могут включать в себя HTML-документ 128, который должен обрабатываться, в веб-обозреватель 122. При запросе пользователем 102 компьютера 120, веб-обозреватель 122 выполнен с возможностью получать HTML-документ 128 с веб-сервера 164 и выполнять его визуализацию в окне 106 на дисплее 104 для представления пользователю 102.
Как вкратце пояснено выше, система 100 также включает в себя программу 140 обработки текстов, выполненную с возможностью разрешать пользователю 102 компьютера 120 редактировать содержимое HTML-документа 128 в окне 106. Согласно одному варианту осуществления, программа 140 обработки текстов допускает выполнение внутри среды выполнения, предоставленной посредством веб-обозревателя 122. Например, программа 140 обработки текстов может создаваться с использованием технологий разработки AJAX.
В одном варианте осуществления, программа 140 обработки текстов получается с веб-сервера 164 наряду с документом 128, который должен быть отредактирован. В альтернативных вариантах осуществления, программа 140 обработки текстов может постоянно размещаться локально на компьютере 120. Программа 140 обработки текстов включает в себя логику 148 обработки текстов, которая выполнена с возможностью предоставлять функциональные средства обработки текстов пользователю 102. В одном варианте осуществления, программа 140 обработки текстов сохраняет содержимое редактируемого документа во внутреннем изображении 150 документа. В других вариантах осуществления, программа 140 обработки текстов сохраняет содержимое редактируемого документа непосредственно внутри HTML-документа 128. Модуль 124 HTML- визуализации визуализирует HTML-документ 128 для отображения.
В одном варианте осуществления, программа 140 обработки текстов включает в себя логику 146 обработки событий, которая отслеживает события пользовательского ввода из процессора пользовательского ввода 126. Как подробнее описано ниже в отношении фиг.3, логика 146 обработки событий выполнена с возможностью обнаруживать размещение пользователем 102 указателя вставки в местоположении внутри HTML-документа 128 при отображении в окне 106. Логика 146 обработки событий дополнительно выполнена с возможностью отслеживать события пользовательского ввода во время редактирования содержимого документа, как описано ниже в отношении фиг.4.
Программа 140 обработки текстов также включает в себя логику 144 создания поверхности редактирования, которая создает поверхность редактирования в окне 106, чтобы принимать изменения в содержимом документа, как подробнее описано ниже в отношении фиг.3. В одном варианте осуществления, поверхность редактирования создается посредством добавления разметки к HTML-документу 128, чтобы создавать элемент 130 поверхности редактирования, который, когда визуализируется посредством веб-обозревателя 122, отображает поверхность редактирования в окне 106. Помимо этого, программа 140 обработки текстов включает в себя логику 142 переформатирования. Как подробнее описано ниже в отношении фиг.5, логика 142 переформатирования сохраняет размер и позицию поверхности 208 редактирования по мере того, как пользователь 102 изменяет ее содержимое.
Ссылаясь теперь на фиг.2A-2C, показываются иллюстративные снимки экрана окна 106, сформированного посредством выполнения программы 140 обработки текстов в веб-обозревателе 122, в соответствии с одним вариантом осуществления. Как показано на фиг.2A, окно 106 отображает абзац текста 202, содержащийся в основной части HTML-документа 128, а также блок текста внутри таблицы 204 HTML-документа 128. Пользователь 102, который хочет редактировать абзац текста 202, может использовать мышь 108, чтобы размещать указатель мыши, проиллюстрированный здесь как указатель вставки текста или корректурный знак 206 вставки, в позиции в абзаце текста 202 в окне 106, и щелкает кнопку мыши 108. Логика 146 обработки событий программы 140 обработки текстов обнаруживает щелчок мыши с указателем 206 вставки в абзаце 202 и инструктирует логике 144 создания поверхности редактирования создавать поверхность 208A редактирования, перекрывающую абзац текста 202 в окне 106, как проиллюстрировано на фиг.2B. Следует принимать во внимание, что действия пользовательского ввода, описанные в данном документе как выполняемые посредством мыши, могут предоставляться с использованием другого типа устройства ввода.
Как подробнее описано ниже в отношении фиг.3, логика 144 создания поверхности редактирования создает поверхность 208A редактирования так, что она имеет идентичный размер и находится в идентичной позиции, как абзац или текст 202, когда он отображается в окне 106. Логика 144 создания поверхности редактирования дополнительно копирует содержимое абзаца 202 на поверхность 208A редактирования и задает абзац 202 невидимым в окне 106. Следует отметить, что в то время когда абзац 202 более не является видимым в окне 106, он по-прежнему занимает идентичное физическое пространство внутри окна 106 и тем самым, по сути, располагается ниже поверхности 208A редактирования. Логика 144 создания поверхности редактирования затем размещает курсор 210 внутри поверхности 208A редактирования, соответствующей позиции размещения указателя 206 вставки в абзаце 202 пользователем 102. Следует отметить, что границы поверхности 208A редактирования, показанной в снимке экрана по фиг.2B, предназначаются только для целей иллюстрации. Фактические границы для поверхности 208A редактирования не создаются в окне 106. Процесс создания поверхности 208A редактирования, копирования содержимого нижележащего абзаца 202 на поверхность 208A редактирования и задания нижележащего абзаца невидимым в окне, как описано в различных вариантах осуществления, является незаметным для пользователя 102. Единственным изменением окна 106, которое воспринимает пользователь 102, является создание курсора 210 в позиции размещения указателя 206 вставки.
Поверхность 208A редактирования остается активной в окне 106, чтобы давать возможность пользователю 102 осуществлять низкоуровневые редактирования текстового содержимого поверхности 208A редактирования. Например, в одном варианте осуществления, поверхность 208A редактирования дает возможность пользователю 102 добавлять или удалять символы из текста в текущей позиции курсора 210. Если пользователь 102 запрашивает функцию редактирования верхнего уровня из программы 140 обработки текстов или переходит к другой части HTML-документа 128 в окне 106, то HTML-документ 128 обновляется с помощью редактирований, выполняемых пользователем 102 на поверхности 208A редактирования, и поверхность 208A редактирования ликвидируется, как подробнее описано ниже в отношении фиг.4. Например, если пользователь 102 размещает указатель 206 вставки в блоке текста внутри таблицы 204, отображаемой в окне 106, то поверхность 208A редактирования ликвидируется, и абзац текста 202 ниже поверхности 208A редактирования обновляется со всеми редактированиями с поверхности 208 редактирования и снова задается видимым в окне 106, как проиллюстрировано на фиг.2C. Как дополнительно проиллюстрировано, новая поверхность 208B редактирования создается с перекрыванием блока текста внутри таблицы 204, и курсор 210 для вставки текста создается внутри новой поверхности 208B редактирования.
Ссылаясь теперь на фиг.3, предоставляются дополнительные подробности касательно вариантов осуществления, представленных в данном документе, для редактирования документа с использованием временной поверхности редактирования. В частности, фиг.3 является блок-схемой последовательности операций, иллюстрирующей аспекты операции создания временной поверхности 208 редактирования в окне 106. Следует принимать во внимание, что логические этапы, описанные в данном документе, реализуются (1) как последовательность машинореализованных этапов или программных модулей, выполняющихся в вычислительной системе, и/или (2) как взаимосвязанные машинные логические схемы или схемные модули внутри вычислительной системы. Эта реализация зависит от требований к производительности и других требований вычислительной системы. Соответственно, логические этапы, описанные в данном документе, упоминаются по-разному как состояния, этапы, структурные устройства, действия или модули. Эти этапы, структурные устройства, действия и модули могут быть осуществлены в программном обеспечении, в микропрограммном обеспечении, в цифровой логике специального назначения и в любой комбинации вышеозначенного. Также следует принимать во внимание, что большее или меньшее число этапов может выполняться, чем показано на чертежах и описано в данном документе. Эти этапы также могут выполняться в порядке, отличном от описанного в данном документе.
Процедура 300 начинается на этапе 302, на котором логика 146 обработки событий обнаруживает, что пользователь 102 размещает указатель 206 вставки в местоположении внутри окна 106. Как пояснено выше, в одном варианте осуществления, пользователь 102 может размещать указатель 206 вставки в местоположении в окне 106 с помощью мыши 108 или посредством перемещения текущего курсора 210 из одной секции HTML-документа 128 в другую с помощью клавиш навигации клавиатуры 110. В альтернативных вариантах осуществления, пользователь 102 может размещать указатель 206 вставки посредством касания дисплея 104 пальцем или пером в местоположении в окне 106.
После обнаружения размещения указателя 206 вставки, процедура 300 переходит к этапу 304, на котором логика 144 создания поверхности редактирования определяет часть HTML-документа 128, который в настоящий момент отображается в местоположении внутри окна 106, в котором указатель 206 вставки размещен. В одном варианте осуществления, HTML-документ 128 может разделяться на абзацы текста 202, содержащиеся внутри основной части документа или внутри других контейнеров, таких как ячейка таблицы 204. Когда пользователь 102 размещает указатель 206 вставки посредством использования мыши 108, логика 144 создания поверхности редактирования запрашивает идентификационные данные абзаца 202 внутри HTML-документа 128, соответствующего местоположению, в котором мышь 108 нажата, из веб-обозревателя 122. Если пользователь 102 размещает указатель 206 вставки посредством использования клавиш навигации клавиатуры 110, логика 144 создания поверхности редактирования определяет корректный абзац посредством анализа содержимого HTML-документа 128. В альтернативных вариантах осуществления, могут требоваться другие разделения документа.
От этапа 304 процедура 300 переходит к этапу 306, на котором логика 144 создания поверхности редактирования определяет позицию символа в абзаце 202, которая наиболее близко соответствует местоположению внутри окна 106, в котором указатель 206 вставки размещен. Эта позиция символа должна использоваться для того, чтобы размещать курсор 210 на поверхности 208 редактирования в позиции, соответствующей той позиции, в которой указатель 206 вставки размещен в абзаце. В одном варианте осуществления, логика 144 создания поверхности редактирования использует алгоритм двоичного поиска, чтобы определять позицию символа. Например, элемент HTML, такой как элемент SPAN, размещается в HTML-документе 128 в позиции символа в середине разметки, содержащей текст абзаца. Координаты внутри окна 106 местоположения элемента SPAN запрашиваются из веб-обозревателя 122 и сравниваются с координатами размещения указателя 206 вставки, чтобы определять то, размещен указатель 206 вставки до или после элемента SPAN в тексте. Процесс повторяется снова, посредством размещения элемента SPAN в середине первой половины или второй половине разметки, соответственно, и продолжается итеративным способом до тех пор, пока позиция символа в абзаце 202, соответствующего местоположению указателя 206 вставки, не определена.
От этапа 306 процедура 300 переходит к этапу 308, на котором логика 144 создания поверхности редактирования определяет текущую позицию и размеры абзаца 202 при отображении в окне 106. В одном варианте осуществления, эта информация запрашивается из веб-обозревателя 122 после того, как абзац 202 идентифицирован. Логика 144 создания поверхности редактирования затем создает поверхность 208 редактирования в окне 106 в местоположении и с размерами, идентичными местоположению и размеру абзаца 202, как указано на этапе 310. В одном варианте осуществления, логика 144 создания поверхности редактирования создает поверхность 208 редактирования посредством добавления разметки к HTML-документу 128, чтобы создавать элемент 130 поверхности редактирования, такой как элемент HTML IFRAME. Элемент 130 поверхности редактирования становится доступным для редактирования посредством задания его атрибута contentEditable равным "истине". В альтернативных вариантах осуществления, элементом 130 поверхности редактирования может быть элемент HTML DIV с атрибутом contentEditable, заданным равным "истине", или элемент HTML TEXTAREA. Логика 144 создания поверхности редактирования задает атрибуты размера и позиции элемента 130 поверхности редактирования так, что он визуализируется посредством веб-обозревателя 122 в позиции и с размером, идентичными позиции и размеру в окне 106 абзаца 202. Специалисты в данной области техники могут принимать во внимание, что если указатель 206 вставки размещается в новом или пустом абзаце так, что текущий размер абзаца равен нулю, логика 144 создания поверхности редактирования создает поверхность 208 редактирования достаточной высоты и ширины для того, чтобы надлежащим образом отображать курсор 210 и первые несколько символов 102, набранные пользователем.
От этапа 310 процедура 300 переходит к этапу 312, на котором логика 144 создания поверхности редактирования копирует содержимое абзаца 202 в HTML-документе 128 на поверхность 208 редактирования. Это включает в себя копирование текста, содержащегося в абзаце 202 в HTML-документе 128, в элемент 130 поверхности редактирования, а также задание атрибутов элемента 130 поверхности редактирования равными атрибутам, применяемым к абзацу 202 в HTML-документе 128. Логика 144 создания поверхности редактирования затем задает абзац 202 невидимым в окне 106 на этапе 314. Как пояснено выше, это выполняется таким образом, что абзац 202 более не является видимым пользователю 102 в окне 106, но по-прежнему занимает идентичное физическое пространство внутри окна 106. Например, в одном варианте осуществления, атрибут видимости абзаца 202 в HTML-документе 128 задается равным "скрытый".
Процедура 300 затем переходит к этапу 316, логика 144 создания поверхности редактирования размещает курсор 210 на поверхности 208 редактирования в позиции символа, соответствующей позиции символа, в которой указатель 206 вставки размещен, как вычислено на этапе 306. В одном варианте осуществления, это выполняется посредством задания текущего выбора как пустого диапазона текста в позиции символа. Затем, процедура 300 переходит к этапу 318, на котором логика 144 создания поверхности редактирования регистрирует обработчики событий логики 146 обработки событий для поверхности 208 редактирования. Как подробнее описано ниже в отношении фиг.4, это дает возможность логике 146 обработки событий обрабатывать связанные с мышью, клавиатурой и другие события обозревателя, к примеру, прокручивание, с поверхности 208 редактирования. На этапе 320 текущий фокус в окне 106 устанавливается на поверхность 208 редактирования.
Фиг.4 является блок-схемой последовательности операций, иллюстрирующей аспекты операции обработки событий, сформированных посредством поверхности 208 редактирования или веб-обозревателя 122 в то время, когда поверхность 208 редактирования является активной в окне 106. Процедура 400 начинается на этапе 402, на котором логика 146 обработки событий обнаруживает, что поверхность 208 редактирования формирует событие, главным образом как результат пользовательского ввода, к примеру, посредством щелчка мыши 108 или набора на клавиатуре 110. После обнаружения события пользовательского ввода логика 146 обработки событий определяет то, должен или нет элемент 130 поверхности редактирования обрабатывать пользовательский ввод исходно, на этапе 404.
В одном варианте осуществления, если пользовательский ввод представляет набранный символ на клавиатуре 110, логика 146 обработки событий сравнивает набранный символ со списком символов, которые должны обрабатываться посредством элемента 130 поверхности редактирования. Например, если набранный символ - это буква, цифра или символ пунктуации, то логика 146 обработки событий определяет то, что он должен обрабатываться посредством элемента 130 поверхности редактирования. Тем не менее, если набранный символ может приводить к изменению формата текста, к примеру, CTRL-B, он не должен перенаправляться в элемент 130 поверхности редактирования для обработки. В альтернативных вариантах осуществления, логика 146 обработки событий может давать возможность элементу 130 поверхности редактирования обрабатывать дополнительный ввод с клавиатуры, такой как клавиши навигации курсора или комбинации клавиш для копирования и вставки.
Если логика 146 обработки событий определяет то, что элемент 130 поверхности редактирования должен обрабатывать пользовательский ввод исходно, процедура 400 переходит к этапу 414, на котором пользовательский ввод передается в элемент 130 поверхности редактирования для обработки. После того, как элемент 130 поверхности редактирования обрабатывает пользовательский ввод, процедура 400 переходит к этапу 416, на котором логика 142 переформатирования выполняется. Это описывается подробно ниже в отношении фиг.5. В одном варианте осуществления, логика 146 обработки событий задает таймер в веб-обозревателе 122 со значением тайм-аута в нуль перед передачей пользовательского ввода в элемент 130 поверхности редактирования. Таким образом, соответствующее событие таймера формируется сразу после того, как пользовательский ввод обрабатывается посредством элемента 130 поверхности редактирования, давая возможность логике 146 обработки событий выполнять операцию переформатирования.
Если логика 146 обработки событий определяет то, что элемент 130 поверхности редактирования не должен обрабатывать пользовательский ввод исходно, процедура 400 переходит к этапу 406, на котором логика 146 обработки событий копирует текст с поверхности 208 редактирования, в том числе и все изменения, произведенные пользователем 102, обратно в нижележащий абзац 202 HTML-документа 128. Логика 146 обработки событий затем ликвидирует поверхность 208 редактирования, как предусмотрено на этапе 408, посредством удаления элемента 130 поверхности редактирования из HTML-документа 128. На этапе 410 нижележащий абзац 202 задается видимым, отменяя изменение, сделанное на этапе 314. Это выполняется, в одном варианте осуществления, посредством задания атрибута видимости абзаца 202 как "видимый". Логика 146 обработки событий затем передает пользовательский ввод в логику 148 обработки текстов для дополнительной обработки на этапе 412.
Фиг.5 является блок-схемой последовательности операций, иллюстрирующей аспекты операции выполнения переформатирования поверхности 208 редактирования внутри HTML-документа 128 в то время, когда она является активной в окне 106. В различных вариантах осуществления, описанных в данном документе, HTML-разметка, добавляемая к HTML-документу 128, чтобы создавать элемент 130 поверхности редактирования, может не приводить к поверхности 208 редактирования, которая надлежащим образом увеличивается или уменьшается по размеру в окне 106 в момент, когда пользователь 102 редактирует содержимое, содержащееся в ней. Например, элемент HTML IFRAME не должен надлежащим образом изменять свои размеры во время редактирования содержимого. Это может приводить к выходу за границы посредством содержимого поверхности 208 редактирования, что инструктирует поверхности 208 редактирования прокручивать содержимое вверх или вниз в пределах границ при отображении в окне 106. Чтобы не допускать этого, логика 142 переформатирования динамически сохраняет размер и позицию поверхности 208 редактирования в окне 106 по мере того, как пользователь 102 редактирует содержимое. Помимо этого, логика 142 переформатирования обеспечивает то, что размер и позиция нижележащего невидимого абзаца 202 остаются идентичными размеру активной поверхности 208 редактирования, чтобы обеспечивать то, что оставшаяся часть HTML-документа 128 надлежащим образом форматируется вокруг поверхности 208 редактирования. Этот процесс упоминается в данном документе как "переформатирование".
Процедура 500 начинается на этапе 502, на котором логика 142 переформатирования определяет то, необходимо или нет переформатирование поверхности 208 редактирования. В одном варианте осуществления, логика 142 переформатирования может выполнять операцию переформатирования после каждого события пользовательского ввода, которое обрабатывается исходно посредством элемента 130 поверхности редактирования. Например, поверхность 208 редактирования может переформатироваться после каждого набранного символа на клавиатуре 110 пользователем 102. В другом варианте осуществления, логика 142 переформатирования может отслеживать события веб-обозревателя через логику 146 обработки событий, чтобы определять то, необходима или нет операция переформатирования. Например, логика 142 переформатирования может выполнять операцию переформатирования поверхности 208 редактирования только в ответ на события прокрутки, сформированные посредством поверхности 208 редактирования, указывающие то, что условие выхода за границы возникло. В еще других вариантах осуществления, логика 142 переформатирования может выполнять вычисления показателей текста для содержимого поверхности 208 редактирования, чтобы определять вероятность того, что условие выхода за границы возникло, и если имеется высокая вероятность того, что выход за границы возник, то операция переформатирования должна выполняться.
После определения того, что переформатирование поверхности 208 редактирования необходимо, процедура 500 переходит к этапу 504, на котором логика 142 переформатирования копирует текст с поверхности 208 редактирования, в том числе и все изменения, произведенные пользователем 102, обратно в нижележащий абзац 202 HTML-документа 128. На этапе 506 логика 142 переформатирования инструктирует веб-обозревателю 122 повторно визуализировать HTML-документ 128 в окне 106, тем самым инициируя веб-обозреватель 122 повторно вычислять позицию и размер нижележащего абзаца 202, теперь содержащего модифицированное содержимое поверхности 208 редактирования, при отображении в окне 106. Логика 142 переформатирования затем определяет новую позицию и размеры нижележащего абзаца 202 при отображении в окне 106, как проиллюстрировано на этапе 508. В одном варианте осуществления, эта информация просто запрашивается из веб-обозревателя 122. Когда новая позиция и размеры известны, процедура 500 переходит к этапу 510, на котором логика 142 переформатирования повторно размещает и изменяет размеры поверхности 208 редактирования в окне 106 так, чтобы совпадать с размерами нижележащего абзаца 202.
Фиг.6 показывает иллюстративную архитектуру компьютера для компьютера 600, допускающего выполнение программных компонентов, описанных в данном документе для редактирования документа с использованием временной поверхности редактирования способом, представленным выше. Архитектура компьютера, показанная на фиг.6, иллюстрирует традиционный настольный компьютер, портативный компьютер или серверный компьютер и может быть использована для того, чтобы выполнять любые аспекты программных компонентов, представленных в данном документе, описанных как выполняющиеся на компьютере 120 или серверном компьютере 162.
Архитектура компьютера, показанная на фиг.6, включает в себя центральный процессор (CPU) 602, системное запоминающее устройство 608, включающее в себя оперативное запоминающее устройство (RAM) 614 и постоянное запоминающее устройство (ROM) 616, и системную шину 604, которая соединяет запоминающее устройство с CPU 602. Базовая система ввода-вывода, содержащая основные процедуры, которые помогают передавать информацию между элементами в компьютере 600, к примеру, в ходе загрузки, сохранена в ROM 616. Компьютер 600 также включает в себя устройство 610 хранения большой емкости для сохранения операционной системы 618, прикладных программ и других программных модулей, которые подробнее описываются в данном документе.
Устройство 610 хранения большой емкости соединено с CPU 602 посредством контроллера устройства хранения большой емкости (не показан), соединенного с шиной 604. Устройство 610 хранения большой емкости и ассоциированные с ним машиночитаемые носители предоставляют энергонезависимое хранилище для компьютера 600. Хотя описание машиночитаемых носителей, содержащееся в данном документе, ссылается на устройство хранения большой емкости, такое как жесткий диск или накопитель CD-ROM, специалисты в данной области техники должны принимать во внимание, что машиночитаемыми носителями могут быть любые доступные компьютерные носители хранения данных, к которым можно осуществлять доступ посредством компьютера 600.
В качестве примера, но не ограничения, машиночитаемые носители могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Например, машиночитаемые носители включают в себя (но не только) RAM, ROM, EPROM, EEPROM, флэш-памяти или другую технологию полупроводниковых запоминающих устройств, CD-ROM, универсальные цифровые диски (DVD), HD-DVD, BLU-RAY или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные устройства хранения, либо любой другой носитель, который может быть использован для того, чтобы хранить требуемую информацию, и к которому можно осуществлять доступ посредством компьютера 600.
Согласно различным вариантам осуществления, компьютер 600 может работать в сетевом окружении с использованием логических соединений с удаленными компьютерами через сеть, к примеру, сеть 620. Компьютер 600 может соединяться с сетью 620 через модуль 606 сетевого интерфейса, соединенный с шиной 604. Следует принимать во внимание, что модуль 606 сетевого интерфейса также может быть использован для того, чтобы соединяться с другими типами сетей и удаленных компьютерных систем. Компьютер 600 также может включать в себя контроллер 612 ввода-вывода для приема и обработки ввода от ряда других устройств, включая клавиатуру, мышь или электронное перо (не показано на фиг.6). Аналогично, контроллер ввода-вывода может предоставлять вывод на экран дисплея, принтер или другой тип устройства вывода (также не показан на фиг.6).
Как вкратце упомянуто выше, ряд программных модулей и файлов данных могут быть сохранены в устройстве 610 хранения большой емкости и RAM 614 компьютера 600, в том числе операционная система 618, подходящая для управления работой сетевого настольного, портативного или серверного компьютера. Устройство 610 хранения большой емкости и RAM 614 также могут сохранять один или более программных модулей. В частности, устройство 610 хранения большой емкости и RAM 614 могут сохранять веб-обозреватель 122 или прикладные программы веб-сервера 164, каждая из которых описана подробно выше относительно фиг.1-5. Устройство 610 хранения большой емкости и RAM 614 также могут сохранять другие типы программных модулей.
На основе вышеприведенного, следует принимать во внимание, что технологии для редактирования документа с использованием временной поверхности редактирования предоставляются в данном документе. Хотя объект изобретения, представленный в данном документе, описан на языке, конкретном для компьютерных структурных признаков, технологических этапов и машиночитаемых носителей, следует понимать, что изобретение, заданное в прилагаемой формуле изобретения, не обязательно ограничено конкретными признаками, этапами или носителями, описанными в данном документе. Наоборот, описанные в данном документе характерные признаки, этапы и носители раскрываются как примерные формы реализации формулы изобретения.
Объект изобретения, описанный выше, предоставляется только в качестве иллюстрации и не должен считаться ограничивающим. Различные модификации и изменения могут быть выполнены для объекта изобретения, описанного в данном документе, без следования примерным вариантам осуществления и применения, проиллюстрированным и описанным, и без отступления от истинной сущности и объема настоящего изобретения, которые изложены в прилагаемой формуле изобретения.
Класс G06F17/24 редактирование, например, вставка/удаление