Delphi里Webbrowser如何执行脚本呢?

10 | 问答知识库用户 |浏览368次
收藏|2014/05/17 22:00
如题,Webbrowser里如何执行JS脚本呢?

满意回答

2014/05/18 22:02

可以参考以下代码:

方法1:
function InvokeScript(doc: IHTMLDocument2; AFunName, aParam: String): Variant;
var
  Disp: IDispatch;
  Member: WideString;
  TheDispId: Integer;
  DispParams: TDispParams;
  VariantArg: TVariantArg;
  Args: WideString;
begin
  Disp := (doc as IHTMLDocument).Script;
  if Assigned(Disp) then
  begin
    Member := AFunName;
    if (Disp.GetIDsOfNames(GUID_NULL, @Member, 1, LOCALE_SYSTEM_DEFAULT,
      @TheDispId)) = S_OK then
    begin
      FillChar(DispParams, SizeOf(DispParams), 0);
      FillChar(VariantArg, SizeOf(VariantArg), 0);
      DispParams.cArgs := 1; // 1   argument
      DispParams.rgvarg := @VariantArg;
      VariantArg.vt := VT_BSTR;
      Args := aParam;
      VariantArg.bstrVal := pointer(Args);
      OleCheck(Disp.Invoke(TheDispId, GUID_NULL, 0, DISPATCH_METHOD, DispParams,
        @Result, nil, nil));
    end;
  end;
end;

function ExecJavaScript(AWebBrowser: TWebBrowser;
  AFunName, AFunParam: string): Variant;
var
  doc: IHTMLDocument2;
begin
  if Supports(AWebBrowser.Document, IHTMLDocument2, doc) then
  begin
    Result := InvokeScript(doc, AFunName, AFunParam);
  end;
end;

方法2:
  WebBrowser1.OleObject.document.parentWindow.execScript('testjs()', 'JavaScript');

方法3:
  webBrowser1.Document.InvokeScript("JS函数名", '参数')

热心网友

其他回答(1)
  • 可以参考以下代码:

    方法1:
    function InvokeScript(doc: IHTMLDocument2; AFunName, aParam: String): Variant;
    var
      Disp: IDispatch;
      Member: WideString;
      TheDispId: Integer;
      DispParams: TDispParams;
      VariantArg: TVariantArg;
      Args: WideString;
    begin
      Disp := (doc as IHTMLDocument).Script;
      if Assigned(Disp) then
      begin
        Member := AFunName;
        if (Disp.GetIDsOfNames(GUID_NULL, @Member, 1, LOCALE_SYSTEM_DEFAULT,
          @TheDispId)) = S_OK then
        begin
          FillChar(DispParams, SizeOf(DispParams), 0);
          FillChar(VariantArg, SizeOf(VariantArg), 0);
          DispParams.cArgs := 1; // 1   argument
          DispParams.rgvarg := @VariantArg;
          VariantArg.vt := VT_BSTR;
          Args := aParam;
          VariantArg.bstrVal := pointer(Args);
          OleCheck(Disp.Invoke(TheDispId, GUID_NULL, 0, DISPATCH_METHOD, DispParams,
            @Result, nil, nil));
        end;
      end;
    end;

    function ExecJavaScript(AWebBrowser: TWebBrowser;
      AFunName, AFunParam: string): Variant;
    var
      doc: IHTMLDocument2;
    begin
      if Supports(AWebBrowser.Document, IHTMLDocument2, doc) then
      begin
        Result := InvokeScript(doc, AFunName, AFunParam);
      end;
    end;

    方法2:
      WebBrowser1.OleObject.document.parentWindow.execScript('testjs()', 'JavaScript');

    方法3:
      webBrowser1.Document.InvokeScript("JS函数名", '参数')
    回答于 2014/05/17 22:00
0人关注该问题
待解决问题



+1
 加载中...