Delphi7中TEmbeddedWB控件弹出Javascript错误提示框问题

来源:互联网 发布:数据可以储存什么文字 编辑:程序博客网 时间:2024/06/06 04:40

   TEmbeddedWB控件是Delphi中常用的浏览器控件,在Delphi7中,由于TEmbeddedWB所用IE内核比较旧,这就造成我们在浏览一些网页的时候,会弹出JavaScript错误提示框,这个行为会给用户带来不好的使用体验,很多时候我们都会想办法去掉这个提示框。

    要去掉这个提示框,目前有两个可行的办法:

   1.  升级TEmbeddedWB控件,但是高版本的TEmbeddedWB在D7中不一定能正常使用,可能需要修改较多的代码(注:这个办法作者并未试验过,在网上查资料时有网友提到这个方案)

    2. 修改D7中TEmbeddedWB的控件源码,这个方法作者使用过,可行有效,下面是例子。

    

    作者试验的TEmbeddedWB版本是1.16b,主要分两个步骤:

    a .  修改TEmbeddedWB的Exec函数,大概在代码2000行处,
     

     case nCmdID of
        OLECMDID_SHOWSCRIPTERROR:
          if Assigned(FOnScriptError)
            then begin
            //pEventObj := (Document as IHTMLDocument2).parentWindow.event;
            pEventObj := GetEventObj(Document as IHTMLDocument2, 'error');
            if pEventObj <> nil then
            begin
              FContinueScript := True;
              FShowDialog := False; (将这个变量设为false,隐藏错误提示框)
              FOnScriptError(self,
                GetProperty('errorline'),
                GetProperty('errorCharacter'),
                GetProperty('errorCode'),
                GetProperty('errorMessage'),
                GetProperty('errorUrl'),
                FContinueScript, FShowDialog);
              TVariantArg(vaOut).vt := VT_BOOL;
              TVariantArg(vaOut).vbool := FContinueScript;
              if not FShowDialog then Result := S_OK;
            end 

    b. 实现TEmbeddedWB.OnScriptError的回调函数,该函数内可以什么都不做,但必须确保TEmbeddedWB.OnScriptError被实现,如何实现?很简单,定义回调函数,将函数指针赋值给OnScriptError即可,回调函数的参数形式可以在TEmbeddedWB文件开始处找到


0 0