|
本帖最后由 roych 于 2015-7-8 11:29 编辑
接下来介绍下克隆子节点(cloneNode)、替换子节点(replaceChild)和移除子节点(removeChild)。cloneNode是对子节点进行克隆操作,replaceChild和removeChild则是由父节点对子节点进行操作的。也就是说,除了自身可以被复制之外,并不能直接移除或者修改自身。这一点需要清楚。
克隆节点语法如下:子节点.cloneNode(布尔值)。参数默认为FALSE,表示只克隆节点,改为TRUE则表示克隆节点和文本。为避免意外,建议写的时候还是不要忽略参数为好。
- Private Sub cmdCloneNode_Click()
- Dim wb As WebBrowser
- Dim doc As HTMLDocument
- Dim newNode As IHTMLDOMNode
- Set wb = Me.WebBrowser0.Object
- Set doc = wb.Document
- 'TRUE:克隆文本和节点,FALSE:只克隆节点,不克隆文本。
- If Me.Frame14.Value = 1 Then
- Set newNode = doc.querySelector("body").lastChild.cloneNode(False)
- Else
- Set newNode = doc.querySelector("body").lastChild.cloneNode(True)
- End If
- '克隆完之后还是要加到节点上的。
- doc.querySelector("body").appendChild newNode
- Me.lblHTML.Caption = "当前BODY的HTML:" & vbCrLf & doc.querySelector("body").innerHTML
- End Sub
复制代码 replaceChild则有两个参数。语法如下:父节点.replaceChild 新的子节点, 旧的子节点。值得注意的是,如果不使用新的DOM元素,则会移除旧的DOM元素。而且定义的变量也是不一样的。如果将节点替换为文本,那么应定义为IHTMLDOMNode类型。否则,则应定义为IHTMLElement,然后通过创建元素,设置innerText来(这里不支持TextContent)处理。- Private Sub cmdReplaceNode_Click()
- Dim wb As WebBrowser
- Dim doc As HTMLDocument
- Dim newNode As IHTMLDOMNode
- Dim newEle As IHTMLElement
- Set wb = Me.WebBrowser0.Object
- Set doc = wb.Document
- If Me.Frame14.Value = 1 Then
- Set newNode = doc.createTextNode("我是新节点哦")
- doc.querySelector("body").replaceChild newNode, doc.querySelector("body").lastChild
- Else
- Set newEle = doc.createElement("span")
- newEle.innerText = "我也是新节点"
- doc.querySelector("body").replaceChild newEle, doc.querySelector("body").lastChild
- End If
- Me.lblHTML.Caption = "当前BODY的HTML:" & vbCrLf & doc.querySelector("body").innerHTML
- End Sub
复制代码 关于移除节点。一些书籍上说是可以只移除文本节点,而不移除元素节点的,但是我没有测试成功。语法如下:父节点.removeChild 子节点。
- Private Sub cmdRemoveNode_Click()
- Dim wb As WebBrowser
- Dim doc As HTMLDocument
- Dim newNode As IHTMLElement
- Set wb = Me.WebBrowser0.Object
- Set doc = wb.Document
- '只移除最后一个节点
- Set newNode = doc.querySelector("body").lastChild
- doc.querySelector("body").removeChild newNode
- Me.lblHTML.Caption = "当前BODY的HTML:" & vbCrLf & doc.querySelector("body").innerHTML
- End Sub
复制代码 上一节 下一节
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|