1

このソースから IE 拡張機能を作成しました: Internet Explorer 拡張機能の開発を開始するにはどうすればよいですか? そして、それはうまく機能します。でも変わりたい

int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
    {
        var form = new HighlighterOptionsForm();
        form.InputText = TextToHighlight;
        if (form.ShowDialog() != DialogResult.Cancel)
        {
            TextToHighlight = form.InputText;
            SaveOptions();
        }
        return 0;
    }

これに:

int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
    {
        HTMLDocument document = (HTMLDocument)browser.Document;

        IHTMLElement head = (IHTMLElement)((IHTMLElementCollection)
                               document.all.tags("head")).item(null, 0);
        IHTMLScriptElement scriptObject =
          (IHTMLScriptElement)document.createElement("script");
        scriptObject.type = @"text/javascript";
        var text = @"alert('hello') ";
        scriptObject.text = "(function(){" + text + "})()";
        ((HTMLHeadElement)head).appendChild((IHTMLDOMNode)scriptObject);
        return 0;
    }

しかし、私はそれを構築し、ボタンをクリックします。警告メッセージは表示されません。スクリプトを挿入するだけです。この問題を解決するためのアイデアやトリック...

4

1 に答える 1

0

ドキュメントに追加されたスクリプト タグが自動的に評価されないため、機能していません。

次のように、スクリプトを手動で評価する必要があります。

var document = browser.Document as IHTMLDocument2;
var window = document.parentWindow;
window.execScript(@"(function(){ alert('hello') })()");

また、 script タグを追加する必要はまったくありません... を使用してスクリプトを実行するだけwindow.execScriptです。

于 2012-11-25T17:13:17.760 に答える