我有一些动态页面,我想在页面完全呈现之前更改某些元素。
我的片段是这样的:
document.body.getElementById("change").innerHTML = "<img src...";
我无权更改内容服务器端。
放置代码片段以在呈现页面之前运行代码的最佳位置在哪里?
相反,将 Javascript 放在 HEAD(window.onload
事件内部?)或关闭 BODY(不在事件侦听器内部)之前是最优的吗?
我有一些动态页面,我想在页面完全呈现之前更改某些元素。
我的片段是这样的:
document.body.getElementById("change").innerHTML = "<img src...";
我无权更改内容服务器端。
放置代码片段以在呈现页面之前运行代码的最佳位置在哪里?
相反,将 Javascript 放在 HEAD(window.onload
事件内部?)或关闭 BODY(不在事件侦听器内部)之前是最优的吗?
恐怕您不太可能在页面呈现之前执行您的脚本。当然,您可以放置一个内联脚本并让它在您希望它显示您的内容的地方使用 document.write(...),但这是一个可怕的解决方案。或者你能做的最好的事情就是在“DOM Ready”事件中,虽然很难在所有浏览器上保持一致,但你确实需要一个库来抽象细节。jQuery 提供了它的 ready 方法来在 DOM 准备好时触发事件,而不是在页面和所有资源完成加载时触发。
由于浏览器通常在元素被解析后立即呈现元素,因此最好的方法是将代码script
直接放在引用元素之后的元素中:
<div id="change"></div>
<script type="text/javascript">
document.body.getElementById("change").innerHTML = "<img src...";
</script>
不确定我是否正确理解了您的问题,但是如果您在头部使用事件侦听器(例如 jQuery 的$(document).ready()
),一旦加载了 dom 结构,您将能够通过将您的代码段传递给handler
被调用的函数()来更改元素当事件触发时。
<HEAD>
//...
<SCRIPT type="text/javascript">
$(document).ready(function() {
$("#change").append(
$("<img src=\"...\">")
) ;
}) ;
<SCRIPT>
</HEAD>
使用核心 javascript,您必须为 mozilla (W3C) 和 Internet Explorer 事件规范分叉您的事件侦听器。互联网上有大量关于如何做到这一点的文档。
无论哪种方式,在这种情况下最好的做法显然是自己创建内容,而不是在渲染后更改它。
AFAIK 你不能这样做。因为在呈现页面之前不会有任何元素,并且您无法访问尚未加载到 DOM 树的元素。
如果您不想在进行 DOM 更改之前渲染任何元素,您可以display: none
在 body 元素上设置 CSS,然后display: block
在完成后将其更改为。