將 <body/> 的內容包到一個 <div/> 中
此篇文章最近更新時間為2009-10-22 19:28:49
目前共有4篇留言
D-Link 友訊科技工程師。喜好戶外運動、2008 年 5 月完成「跑步環島」。對於新技術跟程式碼有著強烈的偏執狂。
P 同事反應也需要一個移除 Wrapper 的功能,但我想也應跟 applyElement 與 surroundContent 一樣盡可能不要用 appendChild 影響。P 同事說 IE 有一個 removeNode 很好用,但是這次換 Firefox 不支援好用的東西了 XD 還好找到一篇部落格有提到解法:http://blog.xuite.net/alex.yung/01/13237200。直接抄下來用果然解決了我的問題,也更新到範例程式中囉!
感謝 Hedger 提供,IE 有一個 applyElement 的方法可以一行就解決所有問題,我已經整到範例程式中了。除了 W3C 的 surroundContents 以外,其他的都可以不用看囉~
var dBody = document.body;
var dWrapper = document.createElement('div');
dWrapper.className = 'wrapper';
var oRange = document.createRange();
oRange.selectNodeContents(dBody);
oRange.surroundContents(dWrapper);
但是 IE 的跟 W3C Range 的定義完全不一樣,也並沒有類似 surroundContents 的方法,讓我一個頭兩個大。document.body.innerHTML = '' + document.body.innerHTML + '';
但是光 Yahoo! 首頁就包了,看起來很正常,但是所有 Tab 的 Hover 事件都不見了。var dBody = document.body;
var dWrapper = document.createElement('div');
dWrapper.className = 'wrapper';
while (dBody.firstChild) {
dWrapper.appendChild(dBody.firstChild);
}
dBody.appendChild(dWrapper);
在還沒找到更好的作法時,就先這樣搞吧 XDD