vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:9212回复:11

iframe 问题

楼主#
更多 发布于:2008-04-25 17:31
再请问一下,
若要得到iframe裡的资料(same domain),
ex:iframe裡某个link…
content.document.getElementById(iframeId).contentWindow.document.getElementsByTagName("a")[o].innerHTML;
这样写对吗?
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
1楼#
发布于:2008-04-25 17:31
不清楚你的写法对不对, 我好像没见过 firefox里有用contentWindow的。  我的方法一般是先获得
iframe元素,然后用获得的元素调出document,最后用文档找链接。

简写是这样的:
i = document.getElementById("iframeName");
iDoc = i.contentDocument;
iDoc.getElementById("linkName");
vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2008-04-25 17:31
因为我这是写在extension裡的…
不知这样用对不对…
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
3楼#
发布于:2008-04-25 17:31
vworld:因为我这是写在extension裡的…
不知这样用对不对…
回到原帖
你不用控制台吗? 如果用法不对,会报错,调试起来很方便的。

firefox自带的控制台,或者扩展console 2,或者firebug都可以。

你上面的写法我觉得可能有错。试试:
var iframe = content.document.getElementById(iframeId);
var iDoc = iframe.contentDocument;
alert(iDoc.getElementsByTagName("a")[o].innerHTML);
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2008-04-25 17:31
vworld:再请问一下,
若要得到iframe里的资料(same domain),
ex:iframe里某个link…
content.document.getElementById(iframeId).contentWindow.document.getElementsByTagName("a")[o].innerHTML;
这样写对吗?
回到原帖

[o] 还是 [0]?



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2008-04-25 17:31
abc@home
[o] 还是 [0]?
回到原帖


是0
number.....
vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2008-04-25 17:31
var iframe = content.document.getElementById(iframeId);
var iDoc = iframe.contentDocument;
try{
alert(iDoc.getElementsByTagName("a")[o].innerHTML);
}
catch(err){
alert(err.description);
}
显示undefined,是指定iframe的位置有错吗?
对iframe的资料抓取实在不懂…麻烦赐教一下,感谢!
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
7楼#
发布于:2008-04-25 17:31
1.   是哪个位置的元素undefined?
2.   这样没头没尾的,也没有办法做测试,你能给个地址过来吗?
3.   用extension抓页面,要确定所需页面的加载动作完成以后,再执行你的代码,否则有可能就是undefined。
4.   如果只是想抓取网页内容,建议用greasemonkey试试。 或者是先用greasemonkey确认能抓取到了,再移植到extension上, 好处就是直接修改profile/gm_scripts下相应的脚本,刷新页面就可以了,不需要重开窗口。
vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2008-04-25 17:31
感谢赐教…
结果是第3个问题…感谢感谢
请问要怎么判断iframe已经完全load了呢?
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
9楼#
发布于:2008-04-25 17:31
vworld:感谢赐教…
结果是第3个问题…感谢感谢
请问要怎么判断iframe已经完全load了呢?
回到原帖
那就要用addEventListener 了,监听load之类的动作。

不过好像很多情况都会触发load监听,比如image加载。extension开发,我所知不多, 也许不对。

看看下面的东西对你有没有帮助:
http://developer.mozilla.org/en/docs/Co ... _page_load

http://developer.mozilla.org/en/docs/Co ... _page_load
vworld
小狐狸
小狐狸
  • UID22892
  • 注册日期2008-02-12
  • 最后登录2008-04-29
  • 发帖数11
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2008-04-25 17:31
感谢帮忙…
可是还是有问题…可以麻烦帮我转到"Mozilla 软件开发及相关技术"的页面去吗?
谢谢!
wushi777
非常火狐
非常火狐
  • UID12365
  • 注册日期2006-04-17
  • 最后登录2011-04-13
  • 发帖数817
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
11楼#
发布于:2008-04-25 17:31
这个。。。  俺没有这个权限
游客

返回顶部