HTML-объект

HTML-объект в MMB представляет собой полнофункциональный браузер. Он базируется на Internet Explorer - смотрите пример html_browser.mbd - эта зависимость от IE является неудобством, однако множество преимуществ использования библиотеки ядра IE перевешивают этот небольшой недостаток... Особенности браузера в MMB

Опции Hide Border и Always Hide Vertical Scroll Bar
Вы можете скрыть границу объекта с помощью опции "Скрыть границу" ("Hide Border"), а также скрыть вертикальную полосу прокрутки, используя опцию "Всегда скрывать вертикальную полосу прокрутки" ("Always Hide Vertical Scroll Bar"). Таким образом, вы можете использовать в проекте HTML-файлы, не нарушая внешнего вида вашего приложения.

Совет 1:
Вы можете использовать особые ссылки в ваших html-файлах, которые позволят запустить скрипт или перейти на другую страницу вашего проекта:

<a href="page:Page 2">Перейти на вторую страницу</a>
Для перехода на определенную страницу проекта также можно использовать слова Next (Следующая), Previous (Предыдущая), First (Первая), Last (Последняя) или Back (Последняя посещенная страница).

<a href="script:Script1">Запустить Script1</a>
Этот синтаксис используется для запуска скрипта, находящегося на текущей странице проекта (для других страниц необходимо указать имя страницы: script:Page 2::Script)

Начиная с версии 4.9.8, появилась великолепная возможность выполнения скриптов непосредственно в HTML/JavaScript! Это открывает целый мир новых возможностей, поскольку теперь вы можете не только вызывать скрипты из HTML, но и передавать переменные из HTML/JavaScript в MMB или даже выполнять скрипт после определенного действия или события в JavaScript!

Чтобы выполнить MMB-скрипт в коде HTML, используйте следующий синтаксис:

Выполнение кода с предупреждениями - в случае ошибки в синтаксисе вы получите сообщение об ошибке:
<a href="scriptcode1:Message(&quot;Это сообщение получено из HTML-кода!&quot;,&quot;&quot;)">Run Script1</a>

Выполнение кода без предупреждений - в случае ошибки в синтаксисе сообщения об ошибках отображаться не будут. Будьте осторожны при использовании этого режима!
<a href="scriptcode0:Message(&quot;Это сообщение получено из HTML-кода!&quot;,&quot;&quot;)">Run Script1</a>

...где &quot; является последовательностью замещения для двойных кавычек ("). Кавычки, записанные с помощью последовательности замещения, будут интерпретироваться как текст, а не часть HTML-кода. Чтобы узнать о других замещающих последовательностях, посетите эту страницу:
http://www.html-reference.com/Escape.htm

В случае если вы хотите передать более одного параметра с помощью одной ссылки, вы можете сделать это, добавив последовательность %0D%0A (возврат каретки и переход на новую строку). Код будет выглядеть таким образом:

<a href="scriptcode1:HTMLVar$='MMB Variable from HTML'%0D%0ALoadText(&quot;Text&quot;,&quot;HTMLVar$&quot;)">Задать переменную и отобразить в окне сообщения</a>

Как говорилось выше, выполнять код скриптов можно не только в HTML, но и в JavaScript! Скажите "Прощай!" различным хитростям (таким как использование буфера обмена) для передачи значений переменных из JavaScript в MMB! Синтаксис вызова scriptcode в JavaScript немного запутаннее, но он не так сложен, как может показаться ;)

Пример передачи значения переменной из JavaScript в MMB:

// это обычная переменная JavaScript
JavaVar='HelloWorld';
// передача значения переменной в MMB
window.location.href='scriptcode1:test$='\''+JavaVar+'\'';
...где красным цветом выделен код MMB-скрипта. Остальная часть кода - синтаксис JavaScript.

Описание отдельных частей кода:
window.location.href в JavaScript является эквивалентом <a href="url">Ссылка</a> в HTML.

scriptcode1: вызывает MMB-код из объекта-браузера.

test$='\''+JavaVar+'\'' является простой комбинацией команды RunScriptCode, JavaScript-переменной JavaVar и нескольких апострофов ;)

После вызова этой путаницы из апострофов и других символов MMB получит строку:
test$='HelloWorld'

И так же, как и в случае с HTML, если вы хотите выполнить более одной строки кода, вам необходимо использовать уже описанную выше последовательность %0D%0A (возврат каретки и переход на новую строку).

// эта строка помещает текст из текстового поля в переменную:
var InputText = document.form1.formtext1.value + '';
// эта строка передает полученное значение в MMB, загружает его в текстовый объект, обновляет окно проекта и отображает окно сообщения
window.location.href='scriptcode1:Input$=\''+InputText+'\'%0D%0ALoadText(\"Text1\",\"Input$\")%0D%0ARefresh(\"\")%0D%0AMessage(\"This message is created from JavaScript\",\"HTML Input: ' +InputText+ '\")';

Все эти приемы можно увидеть в проекте html_mmbscript.mbd.

Совет 2:

Вы можете использовать вложенные html-файлы. Если вы используете вложенный файл, то вы должны не забыть вложить файлы изображений, которые использует html-файл, и другие страницы, связанные ссылками с файлом. Вложенные файлы не могут быть распакованы в различные директории, поэтому все html-файлы и изображения должны находиться в одной директории.

!!! Более целесообразным решением, чем использование чистых htm/html-файлов с разрозненными файлами изображений, может оказаться использование функции IE, которая позволяет сохранить всю страницу с изображениями и flash-роликами в одном файле, так называемом веб-архиве (*.mht). В IE вы можете сохранить страницу в MHT-файл через меню "Файл"->"Сохранить как..." Затем просто вложите сохраненный веб-архив в проект или оставьте его внешним, если размер файла слишком велик для вложения. После этого вы можете загрузить веб-архив в окне свойств HTML-объекта (в процессе разработки проекта) или воспользоваться для этого командой Browser.

Примечание:
Объект-браузер требует наличия IE 4.x и выше. Если на машине пользователя не установлен IE, то HTML-объект запустит браузер, установленный по умолчанию.

ОГРАНИЧЕНИЕ! Клавиша TAB в браузере MMB не может использоваться для переключения между полями HTML-страницы. Причиной является то, что HTML-объект является дочерним окном родительского окна проекта, которое перехватывает нажатие всех клавиш. В настоящее время решение этой проблемы не найдено.