在网页中有JAVA语句:
var bb=['sss',25,'mu',163,69,944,214,'1:1','z14.gif','g14.gif','s14.gif',36133,'944','348','17625','81343']; 在delphi中如何得到bb变量的值?谢谢

解决方案 »

  1.   


    <script language="javascript">  
    var bb="test"
    </script> procedure TForm1.Button1Click(Sender: TObject);
    var
      Doc:IHTMLDocument2;
      Obj:IHTMLScriptElement;
      i:Integer;
    begin
      WebBrowser1.Navigate('http://127.0.0.1/test.htm');
      while WebBrowser1.ReadyState<>4 do
        Application.ProcessMessages;
      //
      Doc:=WebBrowser1.Document as IHTMLDocument2;
      for i:=0 to Doc.scripts.length-1 do
      begin
        Obj:=Doc.scripts.item(i,varEmpty) as IHTMLScriptElement;
        ShowMessage(Obj.text);//至此已经取出一段Script直接的代码,根据bb=这个标记去截取了
      end;
    end;
      

  2.   

    但是变量值是随着程序的运行而变化的,我怎样能动态的得到变量值。

    var BB='11';
    BB=BB+'22';我要在delphi中得到BB的值是‘1122’,能做到吗?
      

  3.   

    首先取出动态的JavaScript代码,去调用COM接口实现:procedure TForm1.Button1Click(Sender: TObject);
    const
      MyScriptStr='function test(){'+#10#13+'var BB=''11'';'+#10#13+'BB=BB+''22'';return BB}'+#10#13;
    var
      Script:OleVariant;
      SA:PSafeArray;
    begin
      Script:=CreateOleObject('ScriptControl');
      Script.Language:='JavaScript';
      Script.AddCode(MyScriptStr);
      ShowMessage(Script.Run('test'));
    end;还有,你给的分太少,如果上面的你不满意,我也暂时想不到好的方法,能者来之
      

  4.   

    晕,到底是Java(Applet?)还是Javascript啊?
      

  5.   

    对楼主这种行为实在无法理解!呼吁广大同仁不要给此类人热心回答问题!按照你原理的意思1楼已经实现,可居然来了个需求变更,但是4楼的想法还是可行的!气氛中!人家的热心居然是廉价的劳动,自己不劳而获就想获取自己想要的东西,CSDN上的分不值钱,随便申请个号就有分!
      

  6.   

    人肉它!!!!!强烈抗议,垃圾人还delphi,还java,我C,没见过这么垃圾这么SB的人!!!! 
      

  7.   

    对hidelphi的帮助表示非常感谢,但我是一个诚实的人,我觉得对我有帮助我就给分了(就像我的上一次提问,hidelphi确实给了我无私的帮助),对我没帮助的我就没给分,感觉没什么不对啊?
    分确实不是问题,反正也不花我的钱,但动不动就提分太少,让我的确感觉不太舒服。
    当然,还是要再次感谢hidelhpi的无私帮助。
    对不住你的地方,表示歉意,我只是说了我想说的话。