请问 如何能得到 document.write产生新元素 的通知?

shrinerain 2009-05-22 06:33:09
Hi, all,

我想监视网页的变化, 现在通过 IHTMLChangeSink 能够得到大部分网页变化的通知.

但是我发现页面js调用document.write或者document.writeln写网页 IHTMLChangeSink 似乎没有通知.

试过document.parentWindow.execScript("document.write = function (text) ... 定向到我的函数, 但是有些非常复杂的javascript, 再加上弹出窗, 多frame之类, 容易出错.

如何能得到document.write产生的页面变化通知呢?

谢谢!

...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shrinerain 2009-05-26
  • 打赏
  • 举报
回复
似乎还是没有很好的办法.

目前我只有SetWindowEventHook, 拦截OBJ_Destory消息.

这个消息会在IHTMLDocument2被销毁时触发. 我的测试页面document.write的时候, 会销毁原来的IHTMLDocument2, 会有这个消息.

这样可以知道document.write发生了.

但是, 不完美, 我想请教各位有没有好办法知道测试页面产生了新的元素?

jameshooo 2009-05-25
  • 打赏
  • 举报
回复
通常write方法是直接放到脚本片段中的,这样在解析脚本元素的时候马上在当前位置写入目标内容,但这个时候整个文档还没有解析完成。
在文档完成之后,基本上很少会再次执行write操作,例外情况是可以在末尾write脚本标签以加载新的脚本。DOM改变不会调用write方法完成,而是通过其它的DOM操作。
shrinerain 2009-05-25
  • 打赏
  • 举报
回复
其实也不一定要得到IHTMLTable产生的消息.

我的目标是要能够得到通知, 告诉我这个页面 "变化" 了, 我需要实时做一些事情.

只要能够达到这个目标就可以了, 什么方法都可以.

希望能指点一下, 谢谢.


shrinerain 2009-05-25
  • 打赏
  • 举报
回复
您的意思是, 我这个测试页面, 按下按钮后, 实际上是产生了一个"新的对象", 它并不是对原来IHTMLDocument2进行的修改, 所以没有事件产生?

那么, 像我测试页面的这种情况, 用什么办法可以得到这个table产生的消息呢?

非常感谢!

jameshooo 2009-05-25
  • 打赏
  • 举报
回复
document.write仅仅在当前位置写入内容,在onclick事件发生的时候,整个HTML已经解析完毕,指针在</html>标签之后,所以write的内容也放到了</html>之后,这对文档没有影响。
shrinerain 2009-05-25
  • 打赏
  • 举报
回复
我挂载了这个IHTMLDocument的onreadystatechange事件.
shrinerain 2009-05-25
  • 打赏
  • 举报
回复
我用下面的网页测试onreadystatechange, 不过似乎按下按钮后, 没有触发onreadystatechange事件?


<html>
<head>
<script language="javascript">
function Generate()
{
document.write("<table>");
document.write("<tr><td><input type='text' value='text1'>");
document.write("<tr><td><input type='text' value='text2'>");
document.write("</table>");
}
</script>
</head>
<body>
<input type="button" value="GenerateTable" onclick="Generate()">

</body>
</html>
TianChong 2009-05-22
  • 打赏
  • 举报
回复
应该可以,不过消息就不知是哪个,我的方法是取对比被修改后的网页的HTML代码,不过这个不能实时反应出来,不符合楼主要求。帮顶吧。
jameshooo 2009-05-22
  • 打赏
  • 举报
回复
可以尝试挂接IHTMLDocument2或者连接点的onreadystatechange事件。
biweilun 2009-05-22
  • 打赏
  • 举报
回复
js中的不怎么好取吧

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧