aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 10665|回复: 2

【己自解决】!状态栏显示Web窗口鼠标指向的实时URL!

[复制链接]

2

主题

18

回帖

142

积分

一级会员

积分
142
发表于 2013-7-7 03:36:26 | 显示全部楼层 |阅读模式
本帖最后由 HiveIT 于 2013-7-7 03:40 编辑

首先,解决问题的方法是:
自己反复阅读【多标签浏览器】例程,一行行的做对比,然后模仿着写出来的。

问题虽然已经得到解决,但仍然没有真正理解“所以然”,只是“知其然”,无耐,自己再慢慢学。

下面贴代码和总结:
————————————————————

  1. import win.ui;
  2. import win.ui.statusbar;
  3. import web.form;
  4. /*DSG{{*/
  5. mainForm = ..win.form( parent=...;bottom=550;scroll=1;right=1000;edge=1;text="aardio Form" )
  6. mainForm.add(
  7. stcmainWb={ dr=1;dl=1;bottom=529;right=995;left=5;dt=1;top=34;z=1;db=1;text="";transparent=1;cls="static" }
  8. )
  9. /*}}*/

  10. //创建web窗体
  11. mainWb = web.form( mainForm.stcmainWb);
  12. mainWb.go("http://bbs.aardio.com");

  13. mainWb.noScriptErr=true;

  14. mainWb.NewWindow2=function( ppDisp, Cancel) {  
  15.     return mainWb.openproxy/*创建代理窗口捕获网址并在当前窗口打开*/
  16. }

  17. mainForm.show( );

  18. //******** 状态栏 关键代码部分 开始 ********
  19. //首先是创建状态栏,可以直接在这里指定初始文字,但我这里用作URL的显示,网页一打开文字立马变了,所以不必要初始化。
  20. //状态文字初始化用法 var stat = win.ui.statusbar(mainForm).setText("测试文字")
  21. //更多用法,可以参看 IDE 里弹出的实时帮助,说得蛮详细,再不行就翻帮助文档吧。
  22. var stat = win.ui.statusbar(mainForm);

  23. //状态栏创建好之后,就是显示Web页面上的URL了,我这里没有多标签页面,也没有特殊要求,所以不需要判断直接显示就好了
  24. mainWb.StatusTextChange = function(text) {
  25.         stat.setText(text)
  26. }

  27. //【多标签浏览器】例程中的代码是下面这样的,大概意或许是:当前窗体中的页面等于Web页面时,才显示状态栏URL文档
  28. //如果不加以判断,则有可能显示的是其他标签页中的URL
  29. //wb.StatusTextChange = function ( text ) {
  30. //        if ( winform.tab.form == wb._form )
  31. //                stat.setText( text );
  32. //}
  33. //******** 状态栏 关键代码部分 结束 ********

  34. //进入消息循环
  35. win.loopMessage();
  36. return winform,wb;
复制代码
总结下来,几点:
一、我之前的问题应该是出在,找错了 wb 窗体,我建立的 Web 窗体是 mainWb。
二、没有理解示例码中下面这一句是什么意思?
    var wb = web.form( form , , 0x40000000/*_DLCTL_SILENT*/ | 0x10/*_DLCTL_DLIMAGES*/| 0x20/*_DLCTL_VIDEOS*/  );
三、不理解为什么没有写鼠标相关的东西,怎么就能在鼠标指向连接的时候,显示出URL来?

33

主题

497

回帖

3294

积分

荣誉会员

积分
3294
发表于 2013-7-7 09:08:14 | 显示全部楼层
StatusTextChange 会在浏览器状态栏的文字被修改时被调用。换言之,你现在实现的并不是“实时显示鼠标指向的链接地址”的功能,而是“实时显示 IE 状态栏文本”的功能,因为你可以看到,上面显示的内容比你想象中的要多。

2

主题

18

回帖

142

积分

一级会员

积分
142
 楼主| 发表于 2013-7-7 13:37:28 | 显示全部楼层
哦~谢谢超版,实际使用时,确实是这样子,显示的内容比我预期的多,而且在网页载入时就开始显示内容。当然,也包括了鼠标指向URL时显示所指内容的功能。

依照超版的意思, StatusTextChange 这个函数是 Web 对象中预定义好,必定会在状态栏文字改变时被调用的,只是如果不指定状态栏,就没有地方给他显示。而且,如果不给他具体显示的内容,即使有状态栏也不会有显示。

如果我想单独显示鼠标指向的内容,是不是应该翻阅一下 StatusTextChange 函数的具体实现中,鼠标的部分?
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-6-6 13:29 , Processed in 0.081736 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表