Ajax 板


LINE

※ 引述《wandog (慢跑中毒)》之铭言: : 各位大大好 : 最近想要透过dom 来自动登入网页 : 和点选所要的联结 但是 遇到了一类似下面的联结 : <a href='javascript:openwnd("argument")' >连结至函数</a> : 直接对他使用click这个方法 一点动作都没有 : 想请教大家都是怎麽处理的 另外 因为这个连结点了之後 : 会再产生另外一个视窗物件 那又要怎麽透过dom去存取这个物件呢? 这个问题要分成三个部分来了解 首先我们来分解a href的动作,a是一个连结的tag,href则是这个标记的一个属性, 标明他的联结位置href里面写的一段文字是一个通信协定(protocal), 通常是http://为开头的http协定 href这个属性会执行预设动作(default action),他的预设动作是 换页并载入新的网址页面(事实上我们不应称之为换页,这个属性的等价动作 完全相同於location.href="xxxxxx") 所以当我们在浏览器按一个a tag的link会发生什麽事 以下是他的流程: a. 发生一个click事件 ,如果有click event handler,会执行处理函式 b. 执行预设动作location.href,也就是执行href属性後面那串文字的 如此一来当你要用click取代href时,必须在处理函式中的最後加上 location.href="xxxxxx")不管你是用传统模式写在分离的.js档案中 x.onclick = function() { .........; location.href="xxxxxx"; } 或是行内注册 <div onclick='.........;location.href="xxxxxx";'>aaa</div> 都必须在处理函式的最後加上location.href="xxxxxx"; 所以依原文<a href='javascript:openwnd("argument")' >连结至函数</a> 这一列完全等价於 <div onclick='location.href="javascript:openwnd(\"argument\")";'> 连结至函数</div> 或是 <div id="test">连结至函数</div> x = document.getElementById('test'); x.onclick = function() { location.href="javascript:openwnd(\"argument\")"; } click 是可以取代href的但是并不是写成 <div onclick='javascript:openwnd("argument")'>连结至函数</div> 因为click是一个event 并没有a tag的预设动作 a href是一个属性他才有预设动作 第二 我们来看看 javascript:所代表的意义 javascript: 是一个虚拟协定(pseudo-protocal) 在ppk on javascript(2-c节)一书的中译本中 把它翻做伪协定 所谓的虚拟协定表示他不是一个真正的通信协定 举例来说http:// , ftp:// 这些则是真正的协定 这也意味着在浏览器的网址列你也可以输入javascript: 因为他在浏览器看来也是一个协定 举例来说 在浏览器网址列打上 javascript:alert('good1');alert('good2'); 浏览器会出来两个对话框good1,good2 没想到吧 javascript:xxxxxxxxx xxxxx所代表的文字完全可视为 eval('xxxxx'); 也就是虽然是虚拟协定 但是他完全可以执行任何的javascript xxxxxxx可以是任何javascript 甚至可以读取其他js档中的任何变数和函式 至於用<div onclick='location.href="javascript:openwnd(\"argument\")";'> 连结至函数</div> 代替是不是有不同呢 答案是还是有的 为什麽 因为在<a href="javascript:xxxxxxx"> 其javascript执行的时机已经在预设动作的阶段 在这时候已经不能用return false;停止预设动作了 而且click的event早已发生过了 第三 我们来看看如何得到popup window 的dom 在 openwnd("argument") 这个函式中一定有用到 var newid = window.open('page.html'); 所以newid指向新视窗 newid.document就是他的dom 你只需要再把这个newid变数传出函式即可利用 或是就直接用window.open吧 <div onclick='location.href=" javascript:var newid = window.open(\"page.html\"); mydom = newid.document;"'>连结至函数</div> 但是即便如此在VBA中是否能call url取回document 因为这部分并不了解 也许你可以把你的VBA程式贴上来研究一下 另外就算能call url ,VBA似乎也不能解译javascript 因为javascript: 是一个虚拟协定 要执行该协定的平台一定是能解译javascript的 例如浏览器便是 所以首要解决的是VBA如何取得一个简单的html网页的dom 先不要考虑popup window 如果可以的话 请把该部分VBA程式码贴上来以供参考 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.98.144
1F:→ TonyQ:真是有心的解释 推一个! 09/26 00:03
2F:推 chrisQQ:推这篇! 09/26 02:10
3F:推 s25g5d4:1F 说好的推呢XD 09/26 09:22







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP