Delphi, EmbeddedWb/twebbrowser - jQuery не выполняется
-
26-10-2019 - |
Вопрос
Я использую EmbeddedWB (расширение Twebbrowser), чтобы сделать «живой предварительный просмотр» некоторого динамически сгенерированного контента.
Я пытаюсь добавить jQuery в микс, чтобы получить некоторые причудливые эффекты, однако, поскольку IE9 всегда спрашивает «разрешить заблокированный контент» для каждой проклятой страницы, динамически сгенерированной (webbrowser.loadfromString), безусловно, не разрешается веселиться. Проще говоря: это не позволит выполнить JavaScript.
Я попытался добавить SecurityManager в свой TembeddedWB, однако это тоже не сделало. Я проверил свой динамический код в Firefox и в IE9, и он работает (конечно, в IE9 я должен сначала разрешить, так я и нашел, что это была проблема безопасности).
Есть ли безболезненный способ обойти это, без необходимости вручную войти в IE и что -то настраивать? Или я совершенно не ошибаюсь в причине проблемы?
РЕДАКТИРОВАТЬ: После попытки Метод этой статьи, IE не спрашивает, должен ли это больше разрешать вещи, однако мой сценарий все еще не выполняется в моем Tembeddedwb/Twebbrowser ..
Редактировать 2: Хорошо, удалив код jQuery и отобразив простое предупреждение, я вынужден прийти к выводу, что JS сейчас выполняется, а JQuery - нет.
Редактировать 3: Вот (разделен) HTML -код, который генерирует мое приложение, где jQuery не работает в моем управлении EmbeddedWB/Twebbrowser - Однако, он работает в самом интернет -проводке 9:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<script type="text/javascript" src="file://C:\jQuery.js"></script>
</head>
<body>
<center>
<p>
Some stuff here!
</p>
</center>
<script type="text/javascript" language="javascript">
$(document).ready(function(){
alert('I Am jQuery!!!!');
});
</script>
</body>
</html>
Edit4: Я также попытался переключить src
Для Google Hosted jQuery, и это тоже не сработало. Удаление метатага тоже не исправило. Просто сообщая вам о вещах, которые я попробовал, прежде чем тратить время на предложение :)
Edit5: Навигация на сайт, который использует jQuery (webbrowser.navigate), сайт работал, как и ожидалось. Однако, делая это из моего локального теста .html или, делая .LoadFromString();
, она не будет работать.
Не будет работать = код jQuery, не выполняющий.
Решение
Похоже, работает, если вы используете правильный URL для файла jQuery.js:
<script type="text/javascript" src="file://C:/jQuery.js"></script>
<script type="text/javascript" src="file:///jQuery.js"></script>
или относительный путь, вы также можете опустить file://
Протокол:
<script type="text/javascript" src="../../jQuery.js"></script>
Приведенное выше работает при загрузке HTML из файла. Однако вопрос заключается в том, что если содержание из памяти и JavaScript из файловой системы не считается пересечением границы контекста безопасности и отклоняется по этой причине встроенным браузером. В этом случае встроение jQuery непосредственно в содержание HTML (с помощью <script>
тег) должен работать.