作者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