社区
HTML/XML
帖子详情
如何通过IHTMLDocument2接口知道网页是否已经被修改过了?
深宇
2006-08-08 09:47:38
虽然有一个lastModified,但是无论有没有改变过,每次取值的结果都不一样.
通过什么方法可以知道内容是否改变呢?
...全文
609
15
打赏
收藏
如何通过IHTMLDocument2接口知道网页是否已经被修改过了?
虽然有一个lastModified,但是无论有没有改变过,每次取值的结果都不一样. 通过什么方法可以知道内容是否改变呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
深宇
2006-09-19
打赏
举报
回复
十分感谢!
我现在试试!
蒋晟
2006-09-17
打赏
举报
回复
<snip>
' *** Put this in your main class
Private m_ihcl As mshtml.IHTMLChangeLog
Private m_imc2 As mshtml.IMarkupContainer2
Private m_ihcs As mshtml.IHTMLChangeSink
Private m_cookie As UInt32
Private Sub CreateChangeLog()
' Get a handle to the current MarkupContainer
m_imc2 = DirectCast(AxWebBrowser1.Document,
mshtml.IMarkupContainer2)
' Create a new change sink
m_ihcs = New ChangeSink(Me)
' Create the change log
m_imc2.CreateChangeLog(m_ihcs, m_ihcl, 1, 1)
m_imc2.RegisterForDirtyRange(m_ihcs, m_cookie)
End Sub
</snip>
<snip>
Public Class ChangeSink
Implements mshtml.IHTMLChangeSink
Private m_Owner As Form1
Public Sub New(ByVal frm As Form1)
m_Owner = frm
End Sub
Public Sub Notify() Implements mshtml.IHTMLChangeSink.Notify
Static count As Integer = 0
count += 1
Debug.WriteLine("Notify: " & count)
End Sub
End Class
</snip>
深宇
2006-09-17
打赏
举报
回复
试验了一下,发现这个CreateChangeLog函数需要IHTMLChangeLog和IHTMLChangeSink类型的参数。
查了很多资料都不知道如何获取这两个参数。
能否给出一个简短的例子?
深宇
2006-09-17
打赏
举报
回复
我说的是编辑模式下的
蒋晟
2006-09-15
打赏
举报
回复
你说的修改是编辑模式下的修改还是在浏览模式下的修改?如果是编辑模式,可以用IMarkupContainer2::CreateChangeLog来获得
深宇
2006-09-15
打赏
举报
回复
假如是这样的话,那些HTML编辑器是如何得知网页是否被修改了呢?
蒋晟
2006-09-13
打赏
举报
回复
在IHTMLDocument2可用之前window.onload已经加载完毕了,这时候作的修改没办法知道
richmain
2006-09-13
打赏
举报
回复
BOOL CHtmlView::GetSource(CString& refString)
{
BOOL bRetVal = FALSE;
CComPtr<IDispatch> spDisp = GetHtmlDocument();
if (spDisp != NULL)
{
HGLOBAL hMemory;
hMemory = GlobalAlloc(GMEM_MOVEABLE, 0);
if (hMemory != NULL)
{
CComQIPtr<IPersistStreamInit> spPersistStream = spDisp;
if (spPersistStream != NULL)
{
CComPtr<IStream> spStream;
if (SUCCEEDED(CreateStreamOnHGlobal(hMemory, TRUE, &spStream)))
{
spPersistStream->Save(spStream, FALSE);
LPCTSTR pstr = (LPCTSTR) GlobalLock(hMemory);
if (pstr != NULL)
{
// Stream is always ANSI, but CString
// assignment operator will convert implicitly.
bRetVal = TRUE;
TRY
{
refString = pstr;
}
CATCH_ALL(e)
{
bRetVal = FALSE;
// DELETE_EXCEPTION(e);
}
END_CATCH_ALL
if(bRetVal == FALSE)
GlobalFree(hMemory);
else
GlobalUnlock(hMemory);
}
}
}
}
}
return bRetVal;
}
深宇
2006-09-12
打赏
举报
回复
主要是本地网页,但是网页修改后,并不一定会保存的,如果只是做了一些修改,但没有保存到本地,这时如何判断是否被修改过呢?
蒋晟
2006-09-11
打赏
举报
回复
如果是本地网页,你可以比较文件的修改时间
如果是远程网页,比较lastModified
wildmen
2006-09-11
打赏
举报
回复
参考: IPersistFile
yhmar007
2006-09-08
打赏
举报
回复
www.jundongelec.com
cenchure
2006-09-04
打赏
举报
回复
没有
深宇
2006-08-10
打赏
举报
回复
那没有什么方法可以知道内容是否改变了吗?
LegerWu
2006-08-09
打赏
举报
回复
也就只有IHTMLDocument2::lastModified Property这么一个属性可以知道了,有些网页是含有多个IHTMLDocument2指针的,比如含有Frame的网页,你取得的值也许并不是一个固定的文档指针的。
I
HTML
Document
2
本文深入解析MS
HTML
接口
,涵盖I
HTML
Document
2至I
HTML
Document
5的详细方法、属性与事件,探讨如何通过这些
接口
访问与操作
HTML
元素,实现
网页
内容的读取与表单提交等功能。
delphi中I
html
document
2
接口
的使用
本文介绍了如何在Delphi中利用MS
HTML
组件的I
html
document
2
接口
与WebBrowser控件交互,实现对
HTML
文档的元素访问、表单数据提交以及读取
网页
内容。通过示例代码,展示了设置输入框值、模拟点击提交按钮以及读取
网页
HTML
源码的方法。
从一个窗口句柄获取IWebBrowser2和I
HTML
Document
2
接口
这篇博客介绍了如何通过一个窗口句柄获取IWebBrowser2和I
HTML
Document
2
接口
,以实现对
网页
的交互操作。文中提供了一个测试示例,展示如何改变
网页
背景色和跳转到百度首页。源代码已在VC6环境下编写并测试通过,适用于VS2008。
如何得到
网页
中所有内嵌框架的I
HTML
Document
2
接口
博客围绕如何获取
网页
中所有内嵌框架的I
HTML
Document
2
接口
展开。起初尝试用I
HTML
Document
2的get_frames方法未成功,后找到通过IOleContainer
接口
的EnumObjects方法实现的途径,并给出了相应代码示例。
关于MS
HTML
、I
HTML
Document
、I
html
document
2-5的区别及
document
.execCommand方法详解
本文详细介绍了MS
HTML
组件,它是微软的COM组件,用于访问
网页
元素。讨论了I
HTML
Document
接口
的不同版本,重点在于I
HTML
Document
2及其
document
.execCommand方法的使用,该方法在实现
网页
文本编辑功能时非常有用,能够执行如加粗、改变颜色等命令。
HTML/XML
3,056
社区成员
8,075
社区内容
发帖
与我相关
我的任务
HTML/XML
VC/MFC HTML/XML
复制链接
扫一扫
分享
社区描述
VC/MFC HTML/XML
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章