1

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

你们有谁知道一种方法来处理这个完全加载的 DOM 树,而它在内存中,然后让它以它的新结构显示?

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

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

但是现在,显示的网站没有插件内容,您会在 1 秒后看到内容(因为我在网站已经显示后添加了内容),所以您看到网站内容正在移动。

感谢您的帮助。

4

4 回答 4

4

这不是很困难。只需使用 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>

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

于 2010-11-15T16:44:27.697 回答
1

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

如果你必须做这个客户端,那么我也不会担心这个。无论如何,网页都是逐步呈现的。也许您有一台速度很快的计算机并且可以快速连接到您的服务器,但我向您保证,您的大多数用户都没有。

只需将一些代码添加到 DOM 准备好使您的页面增强的位。相关: 无需整个框架即可准备好 Javascript DOM

于 2010-11-15T16:45:46.647 回答
0

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

Javascript 只能在加载后操作 DOM。

对于除此之外的任何进一步帮助,您必须提供更具体的示例:-)

于 2010-11-15T16:45:08.353 回答
0

我终于找到了解决方案。

我制作插件查看网页导航。事实上,它会查看 url 的变化,以便我知道用户正在移动到不同的位置(因此我知道在我得到网页的“加载”事件之前我必须做一些事情)。

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

如果有人需要更多关于如何完成的细节,我很乐意回答你的问题。

谢谢。

于 2011-05-18T14:56:25.333 回答