关于Webbrowser的问题。(200分)

  • 主题发起人 主题发起人 阿蛮
  • 开始时间 开始时间

阿蛮

Unregistered / Unconfirmed
GUEST, unregistred user!
在Webbrowser中打开了一页面,想在程序界面上的某个button上对页面里的某些链接进行导航,
但这些链接都是一些脚本,不知道如果是好。
如:在页面中有一个链接为“213路”,点击后在页面中打开213路的信息,位该链接为:
“javascript:info('213路','GJXL');javascript:ZoomToCenter('213路')”,
我怎样在button中的click事件中使webbrowser打开它,就象是点击页面中它相应的链接
的效果。
 
就是webb.navigate:=javascript函数所在页面的路径啊
或者有javascipt的时候新开个窗口,可以嘛?
 
在ButtonClick中执行如下方法
WebBrowser1.Navigate(javascript:info('213路','GJXL');javascript:ZoomToCenter('213路')
难道不行吗?
 
to WebExplorer:
当然不行呀,在编译的时候提示
Undeclared identifier: "javascript"
另外,在button对webbrower进行navigate好象不能用相对路径吧。
 
你使用鼠标在浏览器点击的时候显示的是什么地址?
难道也是javascript:info('213路','GJXL');javascript:ZoomToCenter('213路'?
应该还有个头的,:)
 
WebBrowser1.Navigate('javascript:info(''213路'',''GJXL'');javascript:ZoomToCenter(''213路'')');
 
to: WebExplorer
鼠标在移链接上的时候,在状态栏显示的就是
javascript:info('213路','GJXL');javascript:ZoomToCenter('213路)
没有什么头。
To eric.youbin:
你的代码虽然不报错,但点击没反应,估计是没有用绝对路径吧。
我打开的url是
http://map4.banruo.net/mapredirect.asp?city=南宁市
大家可以试一下里面的公交信息,我想把它做成一个电子地图,程序中只显示地图部份,
其它的自己写代码完成导航。
 
写<a....javascript:...></a>行嘛?
 
to rockjie:
怎么写?
 
你是不是要触发网页中的java?
如果是,似乎不能这么写。
 
可能上面的思路有问题。
浏览器控件中的脚本应该“不认识”WebBrowser1

执行以下脚本:
document.url:=......
 
不能使用navigate方法,可以试试 document as ihtmldocment2
通过该接口获得该链接,再触发,仔细研究一下mshtml单元,我想你肯定能解决
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
Button1: TButton;
WebBrowser1: TWebBrowser;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
oFlags:OleVariant;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://map4.banruo.net/mapredirect.asp?city=南宁市'); //要这里先浏览
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
oFlags:=Flags;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
strURL:AnsiString;
begin
strURL:='javascript:info('''+'206路'+''','+'''GJXL'''+');javascript:ZoomToCenter('''+'206路'+''')';
WebBrowser1.Navigate(strURL,oFlags);
end;

end.

上面的代码我运行一下,还可以运行,也能得出结果,但就是会抛出错误
 
是的,报告“缺少对象”,其后只在地图上显示公交路线,并没有在鹰眼中显示其中心
也就是只执行了javascript:info('213路','GJXL'),而没有执行javascript:ZoomToCenter(''213路'')');
昐解。
 
呵呵,如果在运行中出错用abort屏蔽掉好了。不过IDE里面是不能屏蔽的
 
点击链接后,它要在对象为frmJNMapCity的地方显示结果,点击button进行Navigate时,
没有没指定target="frmJNMapCity",它自然要报错。那么,在Navigate时,怎样指定
target="frmJNMapCity"呢?
 
Navigate不是有个TargetFrameName参数吗?
 
to WebExplorer:
该参数怎样用?[^]
 
再UP一次,二天内无正确答案就发分。[:(]
 
多人接受答案了。
 
后退
顶部