繁体   English   中英

如何在DOM树显示在屏幕上之前对其进行操作? (javascript,jquery等)

[英]How to manipulate a DOM tree before it is displayed on screen ? ( javascript, jquery, …)

问题很简单,但是找不到解决方案。 非常感谢那些提供帮助的人。 我想在网页(DOM树)显示在屏幕上之前对其进行修改。 我了解DOM树在处理之前已完全加载到内存中。

你们中有谁知道一种在内存中处理此完全加载的DOM树并随后以其新结构对其进行显示的方法吗?

我之所以想这样做,是因为我正在开发一个将内容添加到现有网站的插件。

补充->只需提及现有网站不是我的,所以我不能使用php修改网站内容不是我的。

但是现在,显示的网站没有附加内容,您看到的内容是1秒钟后出现的(因为我在网站已经显示之后附加了内容),因此您看到了网站内容的移动。

感谢您的帮助。

这不是很困难。 只需使用CSS隐藏主体,然后在文档的onload-event上进行操作并显示主体。

简短示例:

<html>
<head>
<title>example</title>
<style type="text/css">
<!--
html.scripted body{display:none;}
-->
</style>
<script type="text/javascript">
<!--
//set class for html-element, so the css-rule above will be applied to the body
document.getElementsByTagName('html')[0].className='scripted';

//on page load
window.onload=function()
{
  //do the manipulation
  document.body.appendChild(document.createElement('em')).appendChild(document.createTextNode('dynamic content'));
  alert('manipulation done');

  //show the body
  document.body.style.display='block';
}
//-->
</script>
</head>
<body>
static content
</body>
</html>

关于下面布拉德的评论,您可以考虑是否还有其他方法。 由于真正的问题似乎是移动内容,因此可以将静态占位符放置在动态内容稍后将出现的位置。

您在标记中提到了PHP,那么为什么不在服务器端构建文档呢? 然后,没关系。

如果您必须在客户端这样做,那么我也不必为此担心。 网页还是会逐步呈现。 也许您有一台快速的计算机和与服务器的快速连接,但是我保证您大多数用户没有。

只需在DOM准备好进行页面增强的地方添加一些代码即可。 相关: 无需整个框架即可使用Javascript DOM

在加载DOM之前对其进行操作的唯一方法是使用像php这样的预处理器。

Javascript只能在加载DOM之后对其进行操作。

除了此以外的任何其他帮助,您都必须提供一个更具体的示例:-)

我终于找到了解决方案。

我让插件查看网页导航。 实际上,它查看的是URL的更改,以便我知道用户正在移动到其他位置(因此,我知道我必须做一些事情才能得到网页的“加载”事件)。

然后,我只是尝试使用循环访问一个元素(我知道它将在DOM中,例如标头)。 然后,当元素出现时(在“ Load”事件之前),我插入代码并停止循环/监听。

如果有人需要更多详细信息,我将很乐意回答您的问题。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM