document.write的替代品
我的情况似乎我必须在javascript库中使用document.write。 脚本必须知道定义脚本的区域的宽度。 但是,该脚本对该区域中的任何标记都没有任何明确的知识。 如果有明确的div知识,那么就像这样简单:
<script ref... //inside of referenced script var divWidth = $("#childAnchor").width();
所以,在引用的脚本中,我正在考虑使用document.write这样:
<script ref... //inside of referenced script var childAnchor = "z_87127XNA_2451ap"; document.write(''); var divWidth = $("#" + childAnchor).width();
但是,我真的不喜欢document.write实现。 有没有替代在这里使用document.write? 我不能简单地使用窗口的原因是它在一个视图内部,在一个主视图页面内呈现。 窗口无法正确获得嵌套区域宽度。
该地区几乎就在这里:
AREA
AREA不了解任何其他div。
这刚刚发生在我身上,我记得你的问题:脚本代码可以找到它所在的脚本块,因此你可以从那里遍历DOM。 当前脚本块将是DOM中的最后一个(当代码运行时DOM仍然被解析)。
通过查找当前脚本块,您可以找到其父元素,并在任何位置添加新元素:
before script block after script block
请注意,“蓝色文本”范围将插入“脚本块后”范围之前。 那是因为在调用appendChild
,DOM中不存在“after”跨度。
然而, 有一种非常简单的方法可以使这种失败 。
这种方法别无选择。 这是脚本可以找到嵌套元素宽度的唯一方法,而不需要知道它所加载的DOM的任何内容。
适当使用时使用document.write()
是合法的。 虽然向DOM添加新元素是可取的,但它并不总是可用的选项。
如果你知道它是哪个子元素,你可以在jquery中使用param nth子元素。 否则你需要用each()遍历它们
像这样创建和追加孩子:
var el = document.createElement('div'); el.id='id'; document.body.appendChild(el);
但是我不确定你想要做什么来获得任何宽度,它可能会返回0。
Interesting Posts