C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: CppWebBrowser и динамическое HTML (ошибка в сценариях)  (Прочитано 2260 раз)
direk
Участник
**

Сказали спасибо: +6/-0
Offline Offline

Сообщений: 79


« : 17 февраля 2019, 12:44:13 »

Такая ситуация - програма создает данимические HTML странички.
Если это простой HTML - CppWebBrowser1 отображает их без проблем.
Но для красоты интерфейса я использую в том числе и jQuery-скрипты.

Код
 
TStringStream *str2 = new TStringStream();
str2->LoadFromFile(L"c:\\test.html");
Variant v;
IHTMLDocument2 *HTMLDoc = NULL;
 
CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&HTMLDoc);
v = VarArrayCreate( OPENARRAY( int, ( 0, 0 ) ), varVariant );
v.PutElement(str2->DataString, 0);
HTMLDoc->write(PSafeArray(TVarData(v).VArray));
 
HTMLDoc->close();
delete  str2;
 

Проблема возникает вот здесь : $(document).ready(function()

Код
<script type='text/javascript'>
        $(document).ready(function(){
$('.fancybox').fancybox();
});
</script>

Ругается на: $ не определено.

При том,  если из StringStream HTML-страницу выгрузить в файл
и загрузить его потом в WebBrowser1 через Navigate, то ошибок не выдает и
скрипты выполняються.
 
Код
ppWebBrowser1->Navigate(L"c:\\test.html");

Теперь вопрос - почему, если из файла, скрипты выполняются, а
если тот же файл загрузить в поток и потом в  WebBrowser , то ругается?
И как обойти эту ошибку, если возможно?
Записан
direk
Участник
**

Сказали спасибо: +6/-0
Offline Offline

Сообщений: 79


« Ответ #1 : 17 февраля 2019, 13:31:42 »

Поспешил задавать вопрос. Нашел решение:

Код
TMemoryStream *ms = new TMemoryStream;
   TStringList *lst = new TStringList;
   IPersistStreamInit *strm;
 
   lst->Text = HTMLText;
   lst->SaveToStream(ms);
 
   ms->Position = 0;
   _di_IStream adapter(*(new TStreamAdapter(ms, soReference)));
   if (SUCCEEDED(cppWB->Document->QueryInterface(IID_IPersistStreamInit, (void **)&strm)))
       strm->Load(adapter);
 
   delete ms, strm, lst;

Так все работает. Тему можна закрыть.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: