Добавить пользовательские методы обработки HTML элементов
Добавить пользовательские методы обработки HTML элементов
В ниспадающем меню браузера XE есть много методов по обработке выбранного элемента - клик, заполнение формы, проверка существования элемента, итд.
Но этих стандартных методов не всегда хватает для работы. К примеру для заполнения списков выбора месяца, с вариативнымы именами опций (Jan, 1, 01, January, Янв, Январь) удобно использовать пользовательский метод.
Сделать такой метод в скрипте можно самому - функционал имеется. А как добавить такой метод в ниспадающее меню? Видимо, должна быть возможность редактирования пользователем некого скрипта (JS например), который бы имел доступ к DOM документа, знал бы о том какой элемент выбран, и генерировал бы строку для вставки на место курсора на панели кода.
Сколько будет стоить добавление такого функционала?
Но этих стандартных методов не всегда хватает для работы. К примеру для заполнения списков выбора месяца, с вариативнымы именами опций (Jan, 1, 01, January, Янв, Январь) удобно использовать пользовательский метод.
Сделать такой метод в скрипте можно самому - функционал имеется. А как добавить такой метод в ниспадающее меню? Видимо, должна быть возможность редактирования пользователем некого скрипта (JS например), который бы имел доступ к DOM документа, знал бы о том какой элемент выбран, и генерировал бы строку для вставки на место курсора на панели кода.
Сколько будет стоить добавление такого функционала?
Re: Добавить пользовательские методы обработки HTML элементов
Если мы такое в виде плагина с открытым исходным кодом напишем - норм ? (язык C#)
Re: Добавить пользовательские методы обработки HTML элементов
Если вы потом тыкнете меня носом где править плагин - то норм
Re: Добавить пользовательские методы обработки HTML элементов
Ок, все опишем, добавили в туду - сделаем в ближайшее время
Re: Добавить пользовательские методы обработки HTML элементов
Добрый день сделали:
Вот пример добавление пункта и двух подпунктов
Если этой информаци достаточно - то завтра опубликуем версию, плагин и исходный код плагина.
Вот пример добавление пункта и двух подпунктов
// событие задания контекстного меню bool IPlugin.OnOpenContextMenu(ContextMenuStrip menu, ElemntInfo ei, EventHandler handler) { // добавим пункт меню ToolStripMenuItem item = new ToolStripMenuItem("Plugin Sample Menu"); menu.Items.Add(item); // добавим подпункт 1 ToolStripItem subItem = new ToolStripMenuItem("test 1", null, handler); subItem.Tag = 28000; // paste to editor handler item.DropDownItems.Add(subItem); // добавим подпункт 2 subItem = new ToolStripMenuItem("test 2", null, handler); subItem.Tag = 28000; // paste to editor handler item.DropDownItems.Add(subItem); // return true; }А также информации об элементе в ElemntInfo ei
/// <summary> /// информаци яоб элементе /// </summary> public class ElemntInfo { // tagName public string Tag; // type public string Type; // name public string Name; // id public string Id; // class public string ClassName; // href public string Href; // src public string Src; // alt public string Alt; // value public string Value; // disabled public string Disabled; // selected public string Selected; // selected index public int SelectedIndex; // innerText public string InnerText; // innerHtml public string InnerHtml; // outerText public string OuterText; // outerHtml public string OuterHtml; // x public int X; // y public int Y; // width public int Width; // height public int Height; // all attributes public string Attributes; // all atribute values public string AttributesValues; }
Если этой информаци достаточно - то завтра опубликуем версию, плагин и исходный код плагина.
Re: Добавить пользовательские методы обработки HTML элементов
Нужен еще доступ к DOM, и ссылка на сам элемент для сравнения. Тогда для поиска сложных элементов без name и id я смогу перебрать элементы по какому-нибудь из других параметров и определить порядковый номер именно моего элемента.
Re: Добавить пользовательские методы обработки HTML элементов
Номер могу добавить еще в ElementInfo.
А что имеется ввиду под доступ к DOM и ссылку на элемент ?
А что имеется ввиду под доступ к DOM и ссылку на элемент ?
Re: Добавить пользовательские методы обработки HTML элементов
Ну вот у меня есть свойства элемента, мне надо для него сделать пользовательскую строку кода чтобы вставить в скрипт. К примеру
my_click_by_xpath(xpath)
Тут возникает проблема - не зная структуры документа я не могу написать верный путь к моему элементу! К примеру, я решил кликнуть по innerText. Но на странице может быть еще десять элементов с таким же innerText, и мой элемент например пятый - код не сработает и кликнет по первому. Можно конечно написать монструозный путь который бы содержал все параметры но, во-первых код станет невозможно разобрать, а во вторых некоторые параметры (типа href) могут быть уникальными для каждой сессии, и код тоже не сработает.
Моя идея состоит в том чтобы дать пользователю возможность генерировать код самому исходя из структуры страницы и ссылки на свой элемент. Тогда пользователи могли бы настроить выбор элемента по каким то приоритетным параметрам. К примеру, если есть id то по id, иначе по name, иначе по классу и по номеру вхождения, иначе по innerText и номеру вхождения, итд. Возможно более опытные пользователи чем я имеют в арсенале какието универсалые принципы детекта элементов, но я их пока не нашел.
my_click_by_xpath(xpath)
Тут возникает проблема - не зная структуры документа я не могу написать верный путь к моему элементу! К примеру, я решил кликнуть по innerText. Но на странице может быть еще десять элементов с таким же innerText, и мой элемент например пятый - код не сработает и кликнет по первому. Можно конечно написать монструозный путь который бы содержал все параметры но, во-первых код станет невозможно разобрать, а во вторых некоторые параметры (типа href) могут быть уникальными для каждой сессии, и код тоже не сработает.
Моя идея состоит в том чтобы дать пользователю возможность генерировать код самому исходя из структуры страницы и ссылки на свой элемент. Тогда пользователи могли бы настроить выбор элемента по каким то приоритетным параметрам. К примеру, если есть id то по id, иначе по name, иначе по классу и по номеру вхождения, иначе по innerText и номеру вхождения, итд. Возможно более опытные пользователи чем я имеют в арсенале какието универсалые принципы детекта элементов, но я их пока не нашел.
Re: Добавить пользовательские методы обработки HTML элементов
хорошо, завтра доделаем все и обновим
Re: Добавить пользовательские методы обработки HTML элементов
опубликовано, исходный код в папке Plugin Sample
вот такая информация приходит в функцию в которой можно генерировать меню, все что надо есть :
вот такая информация приходит в функцию в которой можно генерировать меню, все что надо есть :
/// <summary> /// информация об элементе /// </summary> public class ElemntInfo { // tagName public string Tag; // type public string Type; // number public string Number; // name public string Name; // id public string Id; // class public string ClassName; // href public string Href; // src public string Src; // alt public string Alt; // value public string Value; // disabled public string Disabled; // selected public string Selected; // selected index public int SelectedIndex; // innerText public string InnerText; // innerHtml public string InnerHtml; // outerText public string OuterText; // outerHtml public string OuterHtml; // x public int X; // y public int Y; // width public int Width; // height public int Height; // all attributes public string Attributes; // all atribute values public string AttributesValues; // object name public string ObjectName; // form number public string XPath; // frame number public string FrameNumber; // number in form public string NumberInForm; // form number public string FormNumber; // DOM public string Body; }
Re: Добавить пользовательские методы обработки HTML элементов
А сам то выбраный элемент добавьте. Или теперь его можно однозначно найти по number?
Re: Добавить пользовательские методы обработки HTML элементов
И по номеру и по XPath.
Все выложили в 41 версию - можно пользоваться. Если что надо еще - пишите.
Все выложили в 41 версию - можно пользоваться. Если что надо еще - пишите.