Wednesday, January 23, 2008 - 文章

TIPS-IE Operation Aborted Error Again
<%@ Page Language="C#" AutoEventWireup="true" %>
<html>
<head><title></title></head>
<body>
    <form id="form1" runat="server">
    <script type="text/javascript">
    var d = document.createElement("div");
    document.body.appendChild(d);
    </script>
    </form>
</body>
</html>

寫了如上的Code,又被Operation Aborted的Error搞得七葷八素...

之前雖然有寫過類似的TIP,不過顯然當時的結論不夠精確。我並沒有將Code放在Table中間,但一樣會發生問題。這回我倒是Google到了MS的官方文件,搞清楚了問題的根源: (依照KB的說法,它是個Bug,卻歷經IE5.5->IE6->IE7,代代相傳,不簡單呀!)

This problem occurs because a child container HTML element contains script code that tries to modify the parent container element of the child container.

原來在<div></div>裡執行document.body.appendChild就算是變更Parent的內容,並不是我之前所認知的<table></table>。雖然在我的程式中沒有出現<div></div>,但是ASP.NET在產生form1的HTML Code時會自動用一個div將所有的表單內容物都包起來,就符合了在<div></div>中appendChild的情境而導致錯誤。

知道了原因,要解決很簡單,將<script></script>移到</form>之後即可,收工!
發現一件悲慘的事,我真正要應用的場合有套用MasterPage,<form>被放在MasterPage那一層,因此在網頁裡不可能將Code放到</form>之後... orz

想了一下,找到了個法子,既然在<div>中動手不成,所以我就改成:
window.setTimeout('document.body.appendChild(d);',1);

薑!薑!薑!薑... 搞定收工! 這次是真的。

搜尋

Go

<January 2008>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication