作者emn178 (小残)
看板Ajax
标题Re: [问题] IE7跨frame appendChild
时间Tue Dec 8 23:44:48 2009
程式结构大概是这样
a.html
<div style="width:200px;height:200px">
<iframe width="100%" height="100%" src="b.html"></iframe>
</div>
b.html
<script>
function test()
{
var div = document.createElement('DIV');
div.innerHTML = "test";
with( top )
{
document.getElementsByTagName('BODY')[0].appendChild(div);
}
}
</script>
<input type="button" value="test" onclick="test();" />
※ 引述《emn178 (小残)》之铭言:
: 最近在处理相容性问题
: 在IE7上遇到这个问题:
: 在child frame用JavaScript动态产生HTML Element後,要appendChild到 parent frame的
: 某个Element,就会出错,在其他浏览器都是正常的
: 想问这是IE7的限制(or bug) ? 不知道有没有人遇过
: 好像是无解?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.75.235
1F:→ TonyQ:来测测看... 12/08 23:51
2F:→ TonyQ:我发现ie6下也会 , 而且最奇怪的是它可以改parent 上的元素, 12/09 00:03
3F:→ TonyQ:甚至可以改body的innerHTML , 但是就是不给 appendChild @_@ 12/09 00:03
4F:→ TonyQ:理由是引数错误 , 还在想... 12/09 00:03
5F:→ TonyQ:如果只是要解决问题 ,先改用innerHTML吧. 12/09 00:08
6F:→ TonyQ:with(top){document.body.innerHTML+="<div>test</div>";} 12/09 00:09
7F:推 SHPK:div <= iframe.document产生的 所以parent.document 12/09 12:38
8F:→ SHPK:不能appendChild 12/09 12:39
9F:→ emn178:实际上加入的物件会有script, 用innerHTML方式会失效 12/09 12:47
10F:→ emn178:目前唯一的解法似乎是从createElement时就要with(top)了 12/09 12:50
11F:→ emn178:不过之前已经写了一堆,就全部都要改掉.... 12/09 12:51