Delphi, EmbeddedWB / TWebbrowser - jQuery не выполняется - PullRequest
1 голос
/ 26 июля 2011

Я использую EmbeddedWB (расширение TWebbrowser), чтобы сделать «живой предварительный просмотр» некоторого динамически генерируемого контента.

Я пытаюсь добавить jQuery в микс, чтобы я мог получить некоторые причудливые эффектыоднако, поскольку IE9 всегда запрашивает «Разрешить заблокированное содержимое» для каждой проклятой страницы, динамически генерируемая страница (Webbrowser.LoadFromString), безусловно, не сможет развлечься.Проще говоря: он не разрешает выполнение Javascript.

Я попытался добавить SecurityManager в TEmbeddedWB, но это тоже не удалось.Я протестировал свой динамический код в Firefox и в IE9, и он работает (конечно, в IE9 я должен сначала разрешить, как я обнаружил, это было проблемой безопасности).

Есть ли безболезненный способобойти это без необходимости вручную заходить в IE и что-то подправлять?Или я совершенно не прав относительно причины проблемы?

РЕДАКТИРОВАТЬ : после попытки метода этой статьи IE не спрашивает, следует ли ему разрешить что-либо еще, однакомой скрипт все еще не выполняется в моем TEmbeddedWB / TWebbrowser ..

EDIT 2 : Хорошо, удалив код jQuery и отобразив простое предупреждение, я вынужден заключить, что JSвыполняется, но jQuery - нет.

РЕДАКТИРОВАТЬ 3 : Вот (урезанный) HTML-код, который генерирует мое приложение, где jQuery не работает в моем элементе управления EmbeddedWB / TWebbrowser- однако , он работает в самом Internet Explorer 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), сайт работал должным образом,Однако при выполнении этого из моего локального test.html или .LoadFromString(); он не будет работать.

не будет работать = код jQuery не выполняется.

1 Ответ

2 голосов
/ 26 июля 2011

Кажется, что это работает, если вы используете правильный 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>) должно работать.

...