从WebBrowser能调用JavaScript的函数吗?(200分)

  • 主题发起人 主题发起人 Milpas
  • 开始时间 开始时间
M

Milpas

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,如果我写了一个函数:
<script language="javascript">
function myfunc()
{
alert("hello!");
}
</script>

从WebBrowser控件中怎么调这个函数?
 
有专门的sript控件来运行脚本的

webbrowser恐怕不行
 
你把它放到网页中,或者
javascript:alert("hello!");
 
因为我的脚本和当前页面有关,所以用其它的控件来运行可实现不了我要的功能
比如我要刷新页面,按一个菜单项就调一个JavaScript脚本来刷新(也可能是其它操作,总之就是JavaScript function)....到底可不可以呢?
 
1) 使用IntraWeb
2) 使用COM
uses shlobj;
var script:OleVariant;
script:=CreateOleObject('WScript.shell');//或者'ScriptControl,但是你首先得引入wsh库
然后就可以操作了。
3)WebBrowse.navigate,参数就是你的javascript函数。
如:WebBrowse.navigate('javascript:alert("HEHE");');
其实,你只要在资源管理器的地址栏中敲入javascript:alert("HEHE");也会执行。

建议使用第三种,比较简单。
我要分,不管是对是错
 
呵呵,直接调用现成的接口,一句话搞定
注意Script内容(即Memo1.Text)换成这样:
function myfunc()
{
alert("hello!");
}

myfunc(); //调用

下面是Delphi中的代码,测试通过
uses
MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
begin
//当然了,这里还要判断各接口是否成功取得
((WebBrowser1.Document as IHTMLDocument2).get_Script() as IHTMLWindow2).execScript(Memo1.Text, 'JScript');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.delphibbs.com/delphibbs/dispq.asp?lid=2077114');
end;

 
谢谢xianjun,你的代码行得通,正是我想要的东西,现在有一个新的问题:我想从网页中取出某个JavaScript给execScript调用,怎么取?
 
我明白了 :)
 
后退
顶部