У вашего браузера нет разрешений на использование объектов ActiveX в Chrome

Обновлено: 02.07.2024

Начните строить в Google Cloud с бесплатными кредитами на 300 долл. США и более чем 20 бесплатными продуктами.

Понимание изолированных программных сред iFrame и безопасности iFrame

Встраивание стороннего JavaScript в веб-приложения — это старая как мир история. Будь то добавление виджета на вашу веб-страницу или включение пользовательского контента из клиента в ваше облачное приложение, многие разработчики сталкивались с этим в своей карьере. Все мы знаем об элементе iframe в HTML, но много ли мы знаем о том, как он работает? Каковы проблемы безопасности, связанные с выполнением кода внутри iframe, и, кроме того, как атрибут песочницы HTML5 во фрейме может решить эти проблемы?

Цель этого руководства — рассмотреть различные риски безопасности, связанные с запуском стороннего JavaScript на вашей странице, и объяснить, как изолированные окна iframe могут решить эти проблемы, ограничивая разрешения, с которыми ему разрешено работать.

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

Учитывая все это, пошаговое руководство будет состоять из следующих частей:

  1. Настройка двух узловых серверов для имитации двух разных источников
  2. Встраивание содержимого нашей клиентской страницы в iframe на главной странице и изучение того, что является клиентским iframe и что ему не разрешено делать
  3. Применение атрибута песочницы к элементу iframe и изучение различных параметров песочницы.

Начнем!

Шаг 1. Настройка серверов для нашего демонстрационного приложения

Сохраните этот JS-файл под любым именем. Я назвал его server.js. Затем, чтобы запустить наш сервер, мы можем просто запустить:

1.jpg

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

Конечно, на простом жестко запрограммированном ответе далеко не уедешь. Для этой демонстрации нам нужно иметь возможность обслуживать как HTML, так и JS. Для этого я придумал функцию для обслуживания ресурсов из заданной папки.

Эта функция принимает путь к корневой папке, URL-адрес и объект ответа. Если файл не найден, он вернет 404. Если он будет найден, он установит заголовок как текст/javascript или текст/html, в зависимости от суффикса файла. Чтобы это заработало, нам нужно включить еще две зависимости вверху файла:

Забавный факт: поскольку мы используем только встроенные библиотеки узлов, нам не нужно ничего устанавливать через npm! Как только вы создадите файловую систему, путь и нашу функцию актива, продолжайте и обновите свои серверы, чтобы вызвать serveAsset.

Теперь они выглядят очень похоже. Единственная разница в том, что host_server будет искать свои активы в папке host, а client_server — в папке client. Если бы мы перезапустили наш сервер сейчас, то увидели бы следующее сообщение об ошибке:

2.jpg

Это связано с тем, что наша функция serveAsset ищет ресурс для обслуживания в папке хоста или клиента, а мы еще не создали их! Давайте создадим их оба, каждый с файлом index.html и файлом JS.

Наша файловая структура должна выглядеть так:

Теперь, если мы запустим наш сервер и посетим наш локальный хост, мы больше не получим 404, что означает, что наш сервер нашел файл! — но у него еще нет содержания. Чтобы получить некоторое содержание, давайте начнем с чего-то очень простого. Для хоста у нас просто есть HTML как:

И JavaScript как:

3.jpg

Каждый узловой сервер обслуживает файл index.html, который включает файл JavaScript

Шаг 2. Внедрение клиента в хост без песочницы и проверки его разрешений

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

Заполните содержимое этих файлов тем же содержимым, которое мы использовали для других пар HTML/JS. Мы назовем его «Размещенный клиент», то есть клиент iframe из того же источника, что и наш хост.

После того, как мы это сделаем, вернувшись в наш host/index.html, мы можем использовать iframe как для нашего клиента с одинаковым источником, так и для нашего клиента с другим источником.

Если у вас есть оповещения в ваших JS-файлах, как у меня, вы должны были заметить, что каждый отдельный файл вызывает оповещение на верхнем уровне браузера. Должна ли она быть в состоянии сделать это? Этот вопрос подводит нас к первой проблемной области — всплывающим окнам и диалоговым окнам.

Всплывающие окна и диалоговые окна

JavaScript имеет три разные функции, которые запускают всплывающее окно: оповещение, подсказка и подтверждение. Каждый из них открывает диалоговое окно в верхней части контекста просмотра, независимо от того, происходит ли оно из окна верхнего уровня или нет. Самое страшное в этих диалогах, как можно найти в документации предупреждений, это:

«Диалоговые окна — это модальные окна. Они не позволяют пользователю получить доступ к остальной части интерфейса программы, пока диалоговое окно не будет закрыто. По этой причине не следует злоупотреблять функциями, создающими диалоговое окно (или модальное окно)».

Я уверен, что большинство из нас в какой-то момент своей жизни были принудительно перенаправлены на спам-сайт против вашей воли, который затем засыпал вас подобными диалогами. Даже когда вы пытаетесь закрыть его, он просто открывает другой. Это раздражающее поведение полностью блокирует использование сайта, и, к сожалению, его невероятно просто воспроизвести. Попробуйте добавить это в свой файл client.js:

Теперь, когда вы посещаете хост-сайт, вы получаете следующее:

Эти подсказки делают невозможным какое-либо взаимодействие со страницей, и вам придется закрыть всю вкладку или завершить выполнение JavaScript, чтобы избавиться от нее. Хуже всего то, что независимо от того, поступает ли ваш встроенный контент с другого хоста или из того же источника, такое поведение можно использовать.

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

Проблема заключается в том, что каждый iframe работает в своем собственном вложенном контексте просмотра, поэтому переопределение функций на уровне хоста не повлияет на функции на уровне фрейма.

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

Шаг 3. Навигация по окну верхнего уровня и открытие новых вкладок

Теперь давайте посмотрим, как и могут ли iframe изменять URL-адрес окна верхнего уровня и могут ли они открывать новое окно.

Есть два разных метода, которые мы хотим протестировать здесь.

  1. window.open для открытия новых окон и вкладок и
  2. window.location для навигации по странице с текущего URL.

Полезное примечание: элементы iframe могут ссылаться на свое окно верхнего уровня с помощью window.top. Точно так же он может ссылаться на окно своего родителя с помощью window.parent. В нашем случае они делают то же самое.

Давайте удалим весь код из client.js и заменим его следующим:

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

5.jpg

Это здорово! Он блокирует автоматическое перенаправление. Но подождите — что это за последняя часть? «… и не получил ни одного пользовательского жеста».

Что это значит? Означает ли это, что инициированный пользователем жест может перемещаться по окну? Давайте попробуем.

Если мы добавим этот код в наш JS и HTML соответственно, он добавит ссылку на страницу клиента. Когда мы нажимаем на нее, страница перемещается!

Как оказалось, инициированное пользователем действие может перемещаться по окну верхнего уровня, что является основной идеей кликджекинга. Типичная атака кликджекинга заключается в размещении прозрачных полей для кликов поверх страницы, а затем «перехвате» клика для перенаправления страницы на другой URL-адрес. window.open работает так же.

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

Другая часть приведенного выше сообщения об ошибке, в которой говорится, что iframe «не имеет того же источника, что и окно, на которое он нацелен», означает, что наш iframe имеет то же происхождение, что и хост, и у него есть полный доступ для перенаправления страницы, нажмите- действие или нет.

Если вы запустите это, браузер разрешит перенаправление, поскольку это тот же источник. Это не относится к window.open. Даже если оно из того же источника, браузер заблокирует window.open, если вы явно не укажете браузеру разрешить всплывающее окно.

Файлы cookie и запросы браузера

Когда мы это делаем, мы получаем ответ 200.

Это выведет заголовки, когда мы сделаем запрос на наш хост-сервер.Убедитесь, что вы перезапустили сервер после добавления этой строки, а затем перезагрузите свою страницу и найдите запрос, исходящий от размещенного клиента. Это выглядит так:

Шаг 4. Применение атрибута песочницы к iFrame

На данный момент мы определили четыре проблемных области при работе с iframe.

Теперь мы начнем использовать атрибут песочницы для iframe, представленный в HTML5. При добавлении в iframe изолированный iframe ограничивает почти все сценарии и поведение браузера любого рода. Только когда мы добавим разрешения в список, разделенный пробелами, мы активируем именно те разрешения, которые хотим установить. Чтобы увидеть его начальное состояние, добавьте атрибут в виде пустой строки в оба наших окна iframe.

Когда мы помещаем iframe в песочницу, он блокирует выполнение всех скриптов

7.jpg

Ифреймы в изолированной среде без разрешений блокируют запуск всех скриптов

Чтобы это работало, нужно предоставить различные разрешения по одному . Полный список строковых значений можно найти в документации по iframe в разделе песочницы. Начнем с разрешительных скриптов.

Разрешение сценариев

Для начала давайте очистим наши файлы client.js и hosted-client.js и начнем с простого журнала консоли.

Без определения каких-либо разрешений наша песочница не позволит вести консольный журнал. Мы можем запустить наш скрипт, добавив разрешение allow-scripts в наш атрибут iframe.

После того как вы это сделаете и обновите страницу, вы должны увидеть консольный журнал с каждой из наших страниц.

Всплывающие окна и модальные окна

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

При запуске мы получаем следующую ошибку:

Несмотря на то, что мы разрешаем выполнение скриптов, песочница по-прежнему ограничивает многие действия браузера. Чтобы оповещение работало из iframe, нам нужно добавить свойство allow-modals в iframe.

Имейте в виду, что это принцип "все или ничего". Мы не можем разрешить одни всплывающие окна и заблокировать другие. На мой взгляд, это нормальное ограничение, и оно устраняет нашу первую проблему безопасности iframe.

Навигация по окну верхнего уровня и открытие новых вкладок

Наши вторая и третья проблемы с безопасностью связаны с переходом на страницу в сторону от исходного URL. Мы увидели, что iframe того же происхождения может перемещаться по странице без взаимодействия с пользователем, а iframe другого происхождения может делать это при взаимодействии с пользователем. Давайте попробуем это в нашей песочнице.

Это приводит к следующим ошибкам:

8.jpg

При этом мы охватили сразу два случая. Первоначальная команда для изменения местоположения не удалась, как и команда по щелчку. Применяя отдельные разрешения для нашего iframe для каждого из этих случаев, мы можем разрешить любую навигацию с помощью allow-top-navigation и навигацию, активируемую пользователем с помощью allow-top-navigation-by-user-activation.

Когда мы включаем эту функцию, iframe другого происхождения может перенаправлять страницу при действии пользователя. То же самое относится и к фреймам iframe с одним и тем же источником, где вы можете явно установить разрешения для навигации независимо от источника.

Файлы cookie и запросы браузера

В отличие от прошлого раза, это приводит к следующей ошибке:

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

Вообще говоря, если вы обнаружите, что для вашей песочницы вам нужны как разрешения-скрипты, так и разрешения-то же-происхождение, вы должны спросить себя, почему вы в первую очередь создаете iframe и уместно ли наличие свойства песочницы.< /p>

Собираем все вместе: как мы используем iFrames в Looker

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

Без единого способа проверить каждую строку кода, которую наши клиенты могли написать для своих пользовательских визуализаций, нам нужно было создать безопасную среду выполнения для запуска кода. Схема этой среды представлена ​​ниже.

Приведенная выше ошибка связана с тем, что браузер блокирует наш запрос, поскольку у нас больше нет того же источника. Это связано с тем, что свойство песочницы задает для источника фрейма значение null, что означает, что теперь это будет запрос из разных источников, даже если iframe размещен в том же домене.

Добавление атрибута тестовой среды allow-same-origin предотвратит появление обеих этих ошибок. Тем не менее, вы должны быть осторожны и убедиться, что у вас есть полный контроль над содержимым фрейма, прежде чем использовать его.Как указано в документации Mozilla iframe:

«Если встроенный документ имеет то же происхождение, что и главная страница, настоятельно не рекомендуется одновременно использовать как сценарии разрешения, так и разрешения того же происхождения, поскольку это позволяет программно удалить встроенный документ. атрибут песочницы. Хотя это принято, этот случай не более безопасен, чем неиспользование атрибута песочницы».

Вообще говоря, если вы обнаружите, что для вашей песочницы вам нужны как разрешения-скрипты, так и разрешения-то же-происхождение, вы должны спросить себя, почему вы в первую очередь создаете iframe и уместно ли наличие свойства песочницы.< /p>

Собираем все вместе: как мы используем iFrames в Looker

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

Без единого способа проверить каждую строку кода, которую наши клиенты могли написать для своих пользовательских визуализаций, нам нужно было создать безопасную среду выполнения для запуска кода. Схема этой среды представлена ​​ниже.

Получите скорость, безопасность и конфиденциальность с Microsoft Edge.

Элементы управления ActiveX

Элементы управления ActiveX – это небольшие приложения, которые позволяют веб-сайтам предоставлять контент, например видео и игры. Они также позволяют вам взаимодействовать с таким содержимым, как панели инструментов и бегущие строки, когда вы просматриваете веб-страницы. Однако иногда эти приложения могут работать со сбоями или предоставлять вам контент, который вам не нужен. В некоторых случаях эти приложения могут использоваться для сбора информации с вашего компьютера, повреждения информации на вашем компьютере, установки программного обеспечения на ваш компьютер без вашего согласия или предоставления кому-либо удаленного управления вашим компьютером.

Фильтрация ActiveX

Фильтрация ActiveX в Internet Explorer запрещает сайтам устанавливать и использовать эти приложения. Это может помочь вам обезопасить себя во время просмотра, но также может повлиять на производительность некоторых сайтов. Например, при включенной фильтрации ActiveX видео, игры и другой интерактивный контент могут не работать.

Откройте Internet Explorer и нажмите кнопку "Инструменты" .

Наведите указатель на Безопасность в раскрывающемся меню, а затем выберите Фильтрация ActiveX. Теперь рядом с фильтрацией ActiveX должна стоять галочка.

Откройте Internet Explorer и перейдите на сайт, на котором вы хотите разрешить запуск элементов управления ActiveX.

Нажмите кнопку «Заблокировано» в адресной строке, а затем выберите «Отключить фильтрацию ActiveX». Если кнопка "Заблокировано" не отображается в адресной строке, на этой странице нет содержимого ActiveX.

Откройте Internet Explorer и нажмите кнопку "Инструменты" .

Наведите указатель на Безопасность в раскрывающемся меню, а затем выберите Фильтрация ActiveX. Рядом с фильтрацией ActiveX больше не должно быть галочки.

Настройка параметров ActiveX в Internet Explorer

Internet Explorer может быть не настроен на загрузку или запуск элементов управления ActiveX из соображений безопасности. Изменение некоторых дополнительных параметров безопасности позволит вам загрузить, установить или запустить элемент управления, но ваш компьютер может быть более уязвим для угроз безопасности. Изменяйте расширенные настройки ActiveX только в том случае, если вы уверены в повышении уровня риска для вашего ПК.

Чтобы изменить настройки ActiveX

В Internet Explorer нажмите кнопку "Инструменты" , а затем выберите "Свойства обозревателя".

На вкладке "Безопасность" выберите "Пользовательский уровень", а затем в разделе "Элементы управления и подключаемые модули ActiveX" выполните одно из следующих действий:

Разрешите автоматический запрос элементов управления ActiveX, выбрав «Включить».

Разрешите Internet Explorer отображать видео и анимацию на веб-странице, которая не использует внешний медиаплеер, выбрав «Включить».

Разрешите Internet Explorer загружать подписанные элементы управления ActiveX, выбрав «Включить» или «Спрашивать», если вы хотите получать уведомления каждый раз, когда это происходит.

Разрешите Internet Explorer запускать элементы ActiveX и подключаемые модули, выбрав «Включить» или «Спрашивать», если вы хотите получать уведомления каждый раз, когда это происходит.

Разрешите Internet Explorer создавать сценарии для элементов ActiveX, помеченных как безопасные для сценариев, выбрав «Включить» или «Спрашивать», если вы хотите получать уведомления каждый раз, когда это происходит.

Настройки безопасности : Элементы управления ActiveX в Internet Explorer

Выберите ОК, а затем еще раз ОК.

Примечание. Если вы не можете изменить настройки ActiveX, возможно, у вас нет на это разрешения, и вам следует обратиться к системному администратору.

Увлеченный всеми элементами, связанными с Windows, и в сочетании с его врожденной любознательностью, Иван глубоко погрузился в понимание этой операционной системы, специализируясь на драйверах и устранении неполадок с драйверами. Когда он не занимается. Подробнее

  • Если вы не используете IE, вы можете получить сообщение об ошибке, говорящее о том, что компоненты ActiveX не поддерживаются.
  • Это можно легко исправить, загрузив расширение для браузера, и мы покажем вам, как именно.
  • Более полезные руководства можно найти в нашей коллекции статей в Browsers Hub.
  • Заодно пролистайте Software Hub, чтобы найти еще больше интересных материалов.

ваш браузер не поддерживает или отключил ActiveX

Проблемы с вашим текущим браузером? Обновите браузер до лучшего: Opera Вы заслуживаете лучшего браузера! 350 миллионов человек ежедневно используют Opera — полнофункциональную навигацию с различными встроенными пакетами, повышенным потреблением ресурсов и великолепным дизайном. Вот что умеет Opera:

  • Простая миграция: используйте ассистент Opera для переноса существующих данных, таких как закладки, пароли и т. д.
  • Оптимизируйте использование ресурсов: ваша оперативная память используется более эффективно, чем в других браузерах.
  • Повышенная конфиденциальность: бесплатный и безлимитный встроенный VPN
  • Без рекламы: встроенный блокировщик рекламы ускоряет загрузку страниц и защищает от интеллектуального анализа данных.
  • Удобство для игр: Opera GX — первый и лучший браузер для игр.
  • Скачать Opera

ActiveX – это запатентованная Microsoft функция для Internet Explorer, предназначенная для предоставления эксклюзивных элементов управления, необходимых для доступа и отображения определенного веб-контента.

Однако бывают случаи, когда ActiveX работает со сбоями (Internet Explorer) или не существует (в основном любой другой браузер), и вы увидите ошибку Ваш браузер не поддерживает или отключил ActiveX.< /p>

В сегодняшней статье мы объясним, как решить эту проблему.

Как включить ActiveX на моем компьютере?

1. Попробуйте использовать другой браузер

Мы действительно упоминали, что ActiveX не интегрирован ни с одним другим браузером, однако есть способы активировать этот инструмент.

Вот почему мы рекомендуем перейти на браузер, который может предложить больше, чем IE, а именно на Opera.

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

Затем, если у вас есть определенные настройки или закладки, вы можете импортировать их в Opera всего за пару кликов.

Чтобы включить ActiveX, вам потребуется отдельное расширение Open in IE. С помощью этого плагина вы можете открыть любую вкладку в Internet Explorer без необходимости вручную копировать и вставлять ссылки или открывать соответствующий браузер.

открыть страницы в IE с помощью Opera

  1. Загрузите расширение из официальной библиотеки надстроек Opera. Он загрузит заархивированный файл на ваш компьютер.
  2. Извлеките файл локально с помощью любой программы для распаковки.
  3. Дважды щелкните файл install.bat.

Все готово. Расширение отобразится в специальном меню в правом верхнем углу меню (черный ящик). Прикрепите его к панели для более удобного доступа.

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

как просмотреть содержимое ActiveX в Opera

Опера

Контент ActiveX можно просматривать и в Opera, всего лишь с помощью нескольких настроек. Попробуйте Opera прямо сейчас и воспользуйтесь всеми ее замечательными бесплатными функциями!

2. Включить ActiveX в Internet Explorer

<р>7. Дважды нажмите "ОК".

Проверьте, решена ли проблема.

3. Отключить фильтрацию ActiveX

4. Как включить ActiveX в Chrome

просмотреть содержимое ActiveX в Chrome

  1. Загрузите расширение IE Tab для имитации Internet Explorer в Chrome из этого источника.
  2. Когда вы перейдете на веб-сайты, связанные с ActiveX, просто щелкните значок вкладки IE в правом верхнем углу, чтобы запустить его в движке Internet Explorer.
  3. Мы надеемся, что этот пост окажется для вас полезным. Если у вас есть дополнительные предложения по просмотру содержимого ActiveX в браузерах, отличных от IE, напишите нам в разделе комментариев, и мы обязательно их рассмотрим.

    idee restoro< бр />

    По-прежнему возникают проблемы? Исправьте их с помощью этого инструмента:

    Вы ищете разработчика, который поможет вам разработать базу данных Access, веб-приложение, надстройку или другое решение? Свяжитесь со мной и узнайте, чем я могу помочь.

    Элемент управления Access WebBrowser — один из лучших и самых разочаровывающих элементов управления, доступных любому разработчику Access!

    Прелесть этого элемента управления в том, что он позволяет использовать возможности Интернета в рамках вашей базы данных. С другой стороны, мне очень неудобно программировать, так как многие свойства/методы, доступные для элемента управления WebBrowser на других платформах, просто не реализованы в элементе управления WebBrowser Access. Я также обнаружил, что документация и конкретные расширенные примеры являются редкостью, что делает разработку более сложной, чем обычно.

    Поэтому я решил взяться за перо, так сказать, на бумаге, чтобы поделиться некоторыми из того, что я узнал.

    В этой статье я коснусь

    Ограничения управления веб-браузером!

    Прежде чем идти дальше, вы должны знать об одном серьезном ограничении элемента управления WebBrowser в Access, а именно о том, что он не существует для отчетов. Правильно, Майкрософт по бог знает какой причине сделал управление доступным в формах, а не в отчетах?! Насколько я понимаю, это делает его наполовину реализованным элементом управления. Еще одна вопиющая дыра в Access! Как вы можете иметь элемент управления (и я думаю, что это может быть единственный подобный элемент управления), который, по вашему мнению, люди хотят видеть в форме, но не хотят видеть в результирующем отчете? Логика ускользает от меня.

    Тем не менее, вы можете вставить форму с элементом управления WebBrowser в отчет и связать их, но это будет отображаться только в представлениях отчета и макета (и только для 1-й записи), а не в режиме предварительного просмотра. Кроме того, даже в представлениях «Отчет» и «Макет» элемент управления WebBrowser не будет отображаться при печати!

    У меня есть несколько идей обходных путей, но у меня нет времени над ними работать. Я буду держать вас в курсе.

    Также одно предостережение, так как я обнаружил ошибку при работе с элементом управления WebBrowser. Если вы включите в отчет форму с элементом управления WebBrowser, откроете отчет в представлении «Отчет» или «Макет», а затем попытаетесь переключиться в режим предварительного просмотра, Access будет каждый раз падать. Проблема уже передана в Microsoft.

    Кроме того, в том же отчете, что и выше, прокрутка в представлении макета или представлении отчета приводит к сбою Access.

    Итак, мораль этой истории, хотя вы можете обмануть элемент управления WebBrowser в отчете, НЕ делайте этого, это просто не работает!

    URL из таблицы

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

    URL из VBA

    Что если мы захотим использовать строковую переменную VBA для навигации по веб-браузеру. Нет ничего проще еще раз.

    Const sURL = "www.google.ca" Me.WebBrowser0.ControlSource = "=""" & sURL & """"

    Затемнить sURL как строку sURL = Me.URLControlName Me.WebBrowser0.ControlSource = "=""" & sURL & """"

    Содержимое из локального файла

    Небольшой шаг вперед: иногда мы просто хотим загрузить локальный файл в веб-браузер. Это можно сделать, выполнив

    Me.WebBrowser0.ControlSource = "=""M:\Databases\CARDA\Demos\HTML Editor\html\index.html"""

    Const sFile = "M:\Databases\CARDA\Demos\HTML Editor\html\index.html" Me.WebBrowser0.ControlSource = "=""" & sFile & """"

    Dim sFile As String sFile = Me.FileControlName Me.WebBrowser0.ControlSource = "=""" & sFile & """"

    Динамический контент на лету

    Одна из последних вещей, которые я пытался сделать, — это динамическое создание веб-страниц на основе HTML, хранящегося в таблице. Первоначально я брал табличное значение и помещал его в файл на ПК, а затем загружал файл, но мне не понравился такой подход, поскольку он делает ненужные вызовы ввода-вывода из-за постоянной записи на жесткий диск.

    Я подумал, что должен быть способ сделать все это в памяти.

    Теперь веб-браузер предоставляет всевозможные способы изменения содержимого тега заголовка, содержимого тега тела, но ничего, что могло бы полностью изменить сам документ. Я не буду утомлять вас всеми вариантами, которые пробовал, и сразу перейду к делу. Было 2 очень похожих подхода, которые работают в конце дня.

    Читайте также: