Внедрить JavaScript с помощью jQuery во время выполнения в WebBrowser - PullRequest
2 голосов
/ 23 июля 2010

У меня есть настольное приложение с контролем WebBrowser и я пытаюсь внедрить JavaScript в загруженную страницу.

Для этого я добавил два элемента скрипта:

private static void AddJQueryElement(HtmlElement head)
{
    HtmlElement scriptEl = head.Document.CreateElement("script");
    IHTMLScriptElement jQueryElement = (IHTMLScriptElement)scriptEl.DomElement;
    jQueryElement.src = @"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js";

    head.AppendChild(scriptEl);           
}

private static void AddScriptElement(HtmlElement head)
{
    HtmlElement scriptEl = head.Document.CreateElement("script");
    IHTMLScriptElement myScriptElement = (IHTMLScriptElement)scriptEl.DomElement;
    myScriptElement.src = @"file:///c:\JScript.js";
    head.AppendChild(scriptEl);
}

, как вы можете видеть первым, это ссылка на jQuery, потому что я использую его в своем скрипте.Когда я пытаюсь вызвать функцию из моего скрипта, используя _webBrowser.Document.InvokeScript WebBrowser выдает Script Error: «Ожидается объект».и указывает на строку, где я пытаюсь использовать jQuery (var tags = $("Body").find("*");).

Как я могу предотвратить эту ошибку?

Еще одна интересная вещь: если я добавлю что-то вроде alert("hello");, чтобы начатьиз моей функции все работает отлично.

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Не получили правильного ответа, но решили проблему с помощью локальной копии jquery.min.js.

0 голосов
/ 23 июля 2010

Возможно, вы не указали свой скрипт для запуска под нагрузкой. alert ("hello") тратит время, необходимое для загрузки сценария / завершения построения HTML.

$(document).ready(function() {
  // Handler for .ready() called.
});
...