找回密码
 加入
搜索
楼主: tisiem

点击内嵌IE的链接后,如何指定一定还要在内嵌IE里来打开这个新页面?

[复制链接]
发表于 2009-7-10 22:16:05 | 显示全部楼层
本帖最后由 lynfr8 于 2009-7-11 15:39 编辑
为什么这个论坛有一种习惯就是回避问题的解决方法而希望去改变问题的提法呢?
tisiem 发表于 2009-7-10 22:03



网络世界这里也是一个活生生的社会缩影
既然无法强求每个人如我们所愿望那样去做
相信这个问题会有解决方法的
还要继续探索下去
发表于 2009-7-11 14:38:47 | 显示全部楼层
本帖最后由 rho123 于 2009-7-11 14:45 编辑

我来个例子吧  楼上别说这话 不爱听
例子页面:http://newgame.17173.com/_jxqy/
我现在要点击投票的那个页面 用_IELinkClickByText 肯定直接跳出窗口
而且投票的那个页面直接用 _IENavigate ($oIE, "http://vote.newgame.17173.com/vote.php?GameId=640&GameName=剑网3") 打开也不行,页面又会跳转回去,因为该页面有个网页来路判断 一定是要 域名为:17173.com
的网页跳转过来的才行
怎么办 看源码
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 454, 192, 114)
$oIE = _IECreateEmbedded ()
GUICtrlCreateObj($oIE,16, 16, 601, 377)
GUICtrlSetData(-1, "Edit1")
$Button1 = GUICtrlCreateButton("点击", 264, 408, 81, 33, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_Go()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        Case $Button1
                        _Start()
        EndSwitch
WEnd

Func _Go();加载网页
        _IENavigate ($oIE, "http://newgame.17173.com/_jxqy/")
EndFunc

Func _Start()
        $url = 'http://vote.newgame.17173.com/vote.php?GameId=640&GameName=剑网3'
        $s_html = '<a href="'&$url&'" class="touPiao">我要投票</a>'
    _IEBodyWriteHTML ( $oIE, $s_html )
    _IELinkClickByText($oIE, "我要投票")
EndFunc
楼上的 cnsnc  兄已经说明了办法 读取网页中的target=_blank  替换掉为空 在写入 在点击 就不会跳出了 如果你点击的网页不验证来路 你也可以获取你点击的地址链接  
直接_IENavigate ($oIE, "你要点击的链接地址")  这样也是可以行的
发表于 2009-7-11 21:16:11 | 显示全部楼层
本帖最后由 zengjinbai 于 2009-7-11 21:17 编辑

一种方法:"_blank"改成"_self"

另一种方法:可以先登入你的论坛,然后刷新页面,再按链接
我登入游戏服务器就是采取这种方式
发表于 2009-7-12 00:47:54 | 显示全部楼层
捕捉要点击的URL地址,
发表于 2009-7-12 01:12:42 | 显示全部楼层
获取链接地址只能解决部分问题,有些按纽型的链接,点击后的URL是临时生成的,根本不大可能提前获取到这个链接
 楼主| 发表于 2009-7-12 14:57:10 | 显示全部楼层
谢谢楼上几位,rho123 的例子也很好。

只是有一个问题,就是我现在所说的,其实包含了用户交互,用户要哪开哪个页面,准备点击页面里的哪个链接,是不确定的,是由用户临时决定的。
其实我们现在所用的软件,基本都是这么个情况,就是响应用户操作。

autoit平时为大家所用时,往往是集中在一个确定情况下的重复工作,这种确定性限得比较死,乃至于要点的链接是什么样的,要去操作的窗口的标题栏是什么样的,要点击的按钮在屏幕上的位置等等这样一些很确定的情况,所以大家现在所给出的解决方案或者说质疑,都是基于这么一个假定前提。

但很多时候,我们要面对较复杂的操作,决定某个事该不该做,还是得由人来决定。比如我现在要面对的删除论坛广告贴这种操作,也包括平时大家做游戏外挂时,决定攻击屏幕上的哪个怪这类问题。这都需要考虑用户的交互,后续自动操作的时机是由用户的某操作触发的,操作对象也是用户临时选中的。

可能大多数时候,我们需要选用其它高级语言来做这些事更合适吧。在决定试试autoit之前,我看了很多高手的论述,并有和VB来做比较,得出的结论似乎是autoit编译之后的运行效率更高,所以决定尝试用autoit来解决。但现在发现,这方面的范例确实太少。
发表于 2009-7-13 12:04:27 | 显示全部楼层
If you can precict anything about the new IE window, look at the options for _IEAttach

If not, you'll need to learn about events and set up your own newwindow event handler.

Dale
发表于 2009-8-19 22:25:47 | 显示全部楼层
AutoIt V3 内嵌的WebBrowser控件,微软有提供该COM对象的事件接口,即DWebBrowserEvents2(新接口)和DWebBrowserEvents(旧接口)事件接口,注册事件接收函数即可捕获WebBrowser的事件,Au3帮助文档函数参考ObjEvent 函数例子中有使用DWebBrowserEvents2接口的简单示例,不过非常遗憾的是,注册函数后,虽可以捕获所有事件,但却不能在WebBrowser控件浏览的页面中点击会跳出新窗口的链接,一旦点击程序就会崩溃终止掉,到官网上翻了很多贴子,找到很多这个问题的贴子,未能找到问题解决方法,看官网朋友的讨论,估计是Au3的Bug,对COM对象支持不够完美,希望有能力的朋友关注一下,看能否有解决的方法。
发表于 2009-11-2 14:12:20 | 显示全部楼层
顶上去!我也遇到同样的问题,期待解决。
发表于 2010-5-22 22:11:11 | 显示全部楼层
LZ的问题最终解决了么?我最近也遇到同样的麻烦了。
发表于 2010-6-30 11:39:34 | 显示全部楼层
正在研究这问题,深切关注中。。。。我的需求和楼主所提的问题一模一样。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 03:35 , Processed in 0.078067 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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