作者gpmm (银色)
看板Ajax
标题Re: [问题] [javascript] 如何在innerhtml後 还能뀠…
时间Mon Oct 1 00:40:15 2007
※ 引述《SearchNow ( )》之铭言:
[苏姗]
defer 不是用来延迟显示的吗? o_oa" 我不知道还可以这样用
有一个解法不知是否合适,也不需要用到 defer,
你可以试试看~
既然可以解出 script tag 了,那麽应该也可以区分出是 script 包裹的段落
以及非 script 包裹的段落吧。
无论是原本的 html ,或要加载的 html ,假设为以下:
<div>123</div>
<script language="javascript">alert ('456');</script>
<div>789</div>
<script language="javascript">alert ('1010');</script>
在 parse 时,按顺序以下面分类方式 parse
<div>123</div>
<script language="javascript">alert ('456');</script>
<div>789</div>
<script language="javascript">alert ('1010');</script>
其中红色在 parse 过去後,一律产生为(parse 出一个段落就产生一组):
h = document.createTextNode ("");
h.data = "xxxx"
灰色部份扬弃,黄色则产生为(parse 一个区块就产生一组):
s = document.createElement ('script')
s.type = 'text/javascript'
s.text = "xxxx"
最後在重新置入 <div id="test"></div> 时,不要用 innerHTML,
改成依序 appendChild 所有刚刚产生的 node。
这样接回去的不但不会有问题,可以顺利执行,
而且当你 alert test 这个 div 的 innerHTML 时,所有的东西也都乖乖躺在里面了,
无论是 IE or MF。 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.130.248
1F:推 SearchNow:哇 谢谢大师 这想法我从来没有想过 谢谢您 这就去试试!! 10/01 22:40
2F:→ gpmm:我不是大师啊啊啊 orz 10/02 00:06