如何注入javascript函数并在以后使用gecofx调用它

how to inject javascript function and call it later using gecofx

本文关键字:gecofx 调用 何注入 注入 函数 javascript      更新时间:2023-09-26

我正在使用GeckoFX 29和xulrunner。

            string text = " function hi(){ return 1;}";
            GeckoElement script = geckoWebBrowser.Document.CreateElement("script");
            script.SetAttribute("type", "text/javascript");
            script.SetAttribute("language", "javascript");
            GeckoTextNode popText = geckoWebBrowser.Document.CreateTextNode(text);
            script.AppendChild(popText);
            geckoWebBrowser.Document.Head.AppendChild(script);

稍后我会这样调用这个函数。

using (AutoJSContext context = new AutoJSContext(geckoWebBrowser.Window.JSContext))
            {
    context.EvaluateScript(" hi();" , out result);
}

我没有得到函数hi返回的值,结果为空,评估脚本返回false。

这是怎么回事?有人帮忙吗?感谢

我怀疑像这样将脚本附加到文档中是否会导致对其进行解析。

但是执行这样的脚本应该具有添加函数的预期效果:

string text = " function hi(){ return 1;}";
using (AutoJSContext context = new AutoJSContext(geckoWebBrowser.Window.JSContext))
{
    context.EvaluateScript(text, out result);
}

然后,稍后你可以像以前一样称之为:

using (AutoJSContext context = new AutoJSContext(geckoWebBrowser.Window.JSContext))
{
        context.EvaluateScript(" hi();" , out result);
}