搜索
aardio官方社区 门户 查看主题

htmlayout 在节点onAttach 事件中 用createElement 创建的子元素都变成块元素

发布者: cad | 发布时间: 2018-3-16 04:01| 查看数: 264| 评论数: 4|帖子模式

本帖最后由 cad 于 2018-3-16 04:08 编辑

发现 htmlayout 在节点onAttach 事件中 用createElement 创建的子元素都变成块元素 ,使用 insertAdjacentHTML 则并无此问题

QQ图片20180316040705.png

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add()
/*}}*/

io.open()

import web.layout

namespace web.layout.behavior.test{
    onAttach =
function(ltOwner){
        ltOwner.createElement(
"span", "aaa" ).style.border = "1px solid red"   
        ltOwner.createElement(
"span", "bbb" )
    }  
}


var wb = web.layout( winform )
wb.html =
/**
<!doctype html>
<html>
<body>
    <div id="container" style="behavior:test"> </div>
</body>
</html>
**/


io.print( wb.getEle(
"container").innerHTML )

winform.show()
win.loopMessage();


最新评论

Jacen.He 发表于 2018-3-16 13:13:48
这种事只有靠自己想办法,
ltOwner.innerHTML = ltOwner.innerHTML;       
重新解析一下HTML就行了. 他就是个HTML解析器,你得让他有认真解析的机会。

或者不要在 onAttach 里 createElement就行了,
即然 insertAdjacentHTML好用就用insertAdjacentHTML。
nlysh007 发表于 2018-3-16 13:52:20
通过createElement 创建的节点貌似是会继承父元素的属性。。。所以,你要插入行内元素就别用块元素做容器了。。。
cad 发表于 2018-3-16 22:27:54
本帖最后由 cad 于 2018-3-16 22:34 编辑

感谢2位的回复。

总结一下: 节点调用 createElement 或者 insert 后,最后记得手动调用一次 updateHTML() ,否则会解析为块元素。
Jacen.He 发表于 2018-3-16 22:38:00
cad 发表于 2018-3-16 22:27
感谢2位的回复。

总结一下: 节点调用 createElement 或者 insert 后,最后记得手动调用一次 updateHTML ...

用updateHTML是不必要的,updateHTML会重新创建节点,尤其是在 onAttach 里会死循环。

ltOwner.innerHTML = ltOwner.innerHTML 就可以,实际上 insertAdjacentHTML更常用。


手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-22 11:06 , Processed in 0.062503 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表