高分求助TWEBBROWSER問題 幫頂有分

來源:互聯網
上載者:User
高分求助TWEBBROWSER問題 幫頂有分 VCL組件開發及應用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061225015126140.html
用TWEBBROWSER做了一個瀏覽器,調用原生兩個網頁檔案  
  網頁中有大量的JAVESCRIP指令碼,  
  在來回切換時出現三種錯誤,這三種錯誤不經常出,但總有,  
        一個是MSHTML。DLL異常  
   
    二是彈出一個對話方塊,標題為“Just-in-Time 偵錯”  
     最上方是:“請選擇一個調試器”  
     下面是一個列表框,標題為“可能的調試器”  
     列表框中有一個“新執行個體Mircosoft   script   editor”  
            下方是一個複選框,內容是將當前的調試器設為預設調試器,對後最下方是,是否希望用選定的調試器進行調試然後是按鈕  
   
        三是 出現一個對話方塊,從英文看是告訴我在調試狀態下  
   
    第一個問題是測試時在所有機器上都會出現  
    第二個問題和第三個問題,在有的機器上不出現,  
    第三個問題出現後,會直接關閉程式  
   
  開發環境 D7 XP   
  網頁   javascrip,加MP7是由工具軟體產生的  
  請高手解決  
   
  My Code是這樣  
          我有一個單元,定義了一個類,這個類從資料庫中讀出參數,產生執行個體,然後在介面上產生按鈕  
          每個按鈕對應這個類的一個執行個體  
          點擊一個按鈕則會開啟相應的網頁,這些網頁都是存在本地的,是由軟體產生的MP7課件  
          包含視頻和PPT,並由網頁中的javaSCRIPt   指令碼負責視頻和PPT的播放,同步問題,  
          網頁內的指令碼是由軟體產生的,而且單獨播放一個是沒有問題的  
          問題都出在我不停的按按鈕的時候,也就是我開啟一個網頁之後,馬上又開啟一個網頁  
          我想是WEBBROWSER調入了新的網頁,但原網頁中的指令碼沒有釋放乾淨,或者還在運行,造成了衝突,所以出現了這個問題  
          主要代碼如下,  
          unit   define;  
   
  //  
            TPowerCtl   =   class(TObject)  
      private  
          but:   Boolean;  
          Fobj:   Tcontrol;  
          FCtlInfo:   TCtlFieldINfo;  
          oldx:   Integer;  
          oldy:   Integer;  
          procedure   objClick(Sender:Tobject);  
          procedure   objenter(sender:Tobject);  
   
  procedure   TPowerCtl.objClick(Sender:Tobject);  
  var  
      i:integer;  
      doc:IHTMLDOCUMENT2;  
  //   temp:integer;  
  begin  
    //   temp:=0;  
      For   i:=0   to   TControl(sender).Parent.ControlCount-1   do  
      begin  
   
          if   TControl(TControl(sender).Parent.Controls[i]).Tag   =9999   then     //網頁控制項的TAG  
          begin  
              while     TWebBrowser(TControl(sender).Parent.Controls[i]).ReadyState   <>4     do  
                Application.ProcessMessages;//   完成後再執行  
   
              TWebBrowser(TControl(sender).Parent.Controls[i]).Stop   ;  
   
              doc:=TWebBrowser(TControl(sender).Parent.Controls[i]).document   as   IhtmlDOCument2;  
              doc.close   ;  
              doc.clear   ;  
   
              TWebBrowser(TControl(sender).Parent.Controls[i]).Navigate(MainPath+self.FCtlInfo.FINdexPage);         //調入相應的網頁  
   
              doc._Release;  
          end;  
      end;  
   
   
  end;  
   
  由主表單調用這個單元,  
  在這個單元的初始化事件中初始化了OLE控制項//這點我有疑問,到底在那初始化好  
                                                                    //     WEB是辦面上固定的,是否應當寫在PRJ的初始化事件  
                                                                    //或是主表單單元的初始化事件中  
 

頂一下  
  上一貼上幫過忙的兄弟,上一貼已結貼給分,但如有空,請繼續幫忙,

頂頂~

頂了,看...

你得把兩個網頁給出來吧

估計是因為:objClick還沒執行完,新的objClick又執行了  
  需要想辦法避免這樣的情況  
   
  方案1  
  procedure   TPowerCtl.objClick(Sender:Tobject);  
  //。。  
  begin  
      Enabled   :=   False;   //   還沒處理完的時候別讓使用者切換  
  //開啟網頁  
      Enabled   :=   True;   //   處理完後才允許切換  
  end;  
   
  方案2  
  別用while   do  
  通過事件WebBrowser1.OnDocumentComplete處理文檔下載完的事件  
   
 

伴水兄,  
  由於網頁開啟一個新的網頁之後,會自已去調用網頁,所以我覺得用ONDOCUMENTCOMPLETE靠不住,,  
  我現在用readystate=4   來控制控制項的enabled,  
  但是問題還是一樣,  
  有沒有辦法在我中止網頁的同時,中止網頁中指令碼的執行  
 

剪兄  
    兩個網頁加起來300多M,我估計發不出來,含視頻和PPT的,指令碼也不是我寫的,

沒遇到過,我幫頂!

初始化一定要加,很重要,格式:  
  uses   ActiveX;  
   
   
  Initialization  
        OleInitialize(nil);  
  finialization  
        OleUnInitialize;  
   
 

兩個網頁加起來300多M,我估計發不出來,含視頻和PPT的,指令碼也不是我寫的,  
   
   
  大汗,給出網頁代碼就可以吧!ppt和視頻都是本地調用。  
  不過新手,不會webbrowser的異常處理。

初始化應當加在那個單元?

結帳給分

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.