html获取跨域名代码,JS获取iframe元素及跨域访问操作

最近在写日语在线输入法时需要用到对iframe内子元素的控制。

iPage.html,

里dom:

src="srcPage.html" scrolling="no"

frameborder="0">

srcPage.html,

里dom:

妹妹的一天

早上吃早点,中午约会吃饭,下午K歌,晚上和哥哥瞎折腾

下面讨论ie下JS是怎么操作以上两个页面,再讨论firefox的做法,最后给出兼容ie,firefox浏览器操作iframe对象的方法。

一、ie下访问操作iframe里内容 大家都知道iframe是非标准html标签,它是由ie浏览器推出的多布局标签,随后Mozilla也支持了这个标签。(闲话,嘿嘿)

1.

ie通过document.frames["IframeName"]获取它,例子:我们在iPage.html里输出srcPage.html里h1的内容,JS如下:

alert(document.frames["iName"].document.getElementsByTagName_r('h1')[0].firstChild.data);

你会发现这样在页面里加入代码,好像并没有输出想要的东东,为什么呢?这个我也没有搞清楚,只是习惯性的加入了window.onload就有输出了(注:JS代码都写到这个事件里去),知道的人士可否告诉我下。why?更改之后代码ie下有了输出,firefox下document.frames

没有定义错误提示:

window.onload = (function () {

alert(document.frames["iName"].document.getElementsByTagName_r('h1')[0].firstChild.data);

});

2. ie另一种方法contentWindow获取它,代码:

window.onload = (function () { var iObj =

document.getElementByIdx_x('iId').contentWindow;

alert(iObj.document.getElementsByTagName_r('h1')[0].firstChild.data);

});

此方法经过ie6,ie7,firefox2.0,firefox3.0测试都通过,好事啊!嘿嘿。(网上一查,发现Mozilla

Firefox

iframe.contentWindow.focus缓冲区溢出漏洞,有脚本注入攻击的危险。后来听说可以在后台防止这样的事情发生,算是松了口气。不过还是希望firefox新版本可以解决这样的危险。)

3.改变srcPage.html里h1标题内容,代码:

iObj.document.getElementsByTagName_r('h1')[0].innerHTML='我想变成她一天的一部分';

通过contentWindow后访问里面的节点就和以前一样了。

二、firefox下访问操作iframe里内容 Mozilla支持通过IFrameElmRef.contentDocument访问iframe的document对象的W3C标准,通过标准可以少写一个document,代码:

var iObj =

document.getElementByIdx_x('iId').contentDocument;

alert(iObj.getElementsByTagName_r('h1')[0].innerHTML='我想变成她一天的一部分');

alert(iObj.getElementsByTagName_r('p')[0].firstChild.data);

兼容这两种浏览器的方法,现在也出来了,就是使用contentWindow这个方法。嘿嘿!操作iframe是不是可以随心所欲了呢?如果还觉得不爽,你甚至可以重写iframe里的内容。

三、重写iframe里的内容

通过designMode(设置文档为可编辑设计模式)和contentEditable(设置内容为可编辑),你可以重写iframe里的内容。代码:

var iObj =

document.getElementByIdx_x('iId').contentWindow;

iObj.document.designMode = 'On';

iObj.document.contentEditable = true;

iObj.document.open();

iObj.document.writeln('

');

iObj.document.writeln('

{background:#000;font-size:9pt;margin: 2px; padding:

0px;}');

iObj.document.writeln('

');

iObj.document.close();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值