Re[2]: Динамическое добавление скриптов в HTML используя DOM
От: degoal  
Дата: 19.09.08 20:31
Оценка:
Здравствуйте, vinnitu, Вы писали:

V>Здравствуйте, degoal, Вы писали:


D>>не получается динамически добавить скрипт


V>аналогичная проблема.


V>посредством put_innerHTML() не удаётся добавить код с <script>,

V>отфильтровывается он... так а как же тогда его добавить?



Собственно говоря, все зависит от того, для чего тебе нужно добавить скрипт на страницу. Если для того, чтобы выполнить его в контексте страницы (что собственно мне и нужно было), то можно использовать следующий код:

  CComQIPtr<IHTMLDocument2> doc2;
  CComQIPtr<IHTMLDocument3> doc3;
  CComQIPtr<IHTMLWindow2>   win2;
  CComQIPtr<IHTMLElement>   elem;
  HRESULT                   hr;
  _variant_t                rv;
  _bstr_t                   code;
  _bstr_t                   lang_name("JavaScript");

  doc2 = m_browser.get_Document();
  doc3 = doc2;
  hr = doc2->get_parentWindow(&win2);

  code = "function test_func() { alert(\"Hello World\"); }";
  hr = win2->execScript((BSTR)code, (BSTR)lang_name, &rv);  // таким образом происходит объявление функции для JavaScript


Причем объявленный таким образом код можно вызвать как из С++


  code = "test_func();";
  hr = win2->execScript((BSTR)code, (BSTR)lang_name, &rv);


так и путем вызова этой объявленной функции из уже существующего кода на HTML странице.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.