探索Vue.js源码——实用的getOuterHTML()方法

前言

在JavaScript中,如果要获取一个DOM的HTML代码,需要这样:

	var DOM = documnet.getElementById('div1')
	DOM.innerHTML()

而在很多情况下,我们不仅需要获取该DOM包含的HTML代码,还需要这个DOM本身的HTML代码,那么需要这样:

	var DOM = documnet.getElementById('div1')
	DOM.outerHTML()

但是有时候,这个DOM如果外层不存在元素包裹着它,例如此时这个DOM只是一个普通的文件节点,那么这个DOM就不会有outerHTML属性,即会返回undefine,例如:

	<!DOCTYPE html>
	<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>index</title>
	</head>
	<body>
		<div id="containter">11111</div>
	</body>
	<script>
		var container = document.getElementById('containter')
		console.log(container.childNodes[0].outerHTML)
	</script>
	</html>

而在Vue源码中针对这一问题,定义了getOuterHTML方法来解决这种情境。

getOuterHTML()

代码路径是在/src/platforms/web/entry-runtime-width-complier.js中:

	function getOuterHTML (el: Element): string {
	  // 如果元素的outerHTML存在
	  if (el.outerHTML) {
	    // 返回该元素及本身的所有HTML代码
	    return el.outerHTML
	  } else { // 如果该元素的outerHTML属性不存在
	    // 创建一个DIV
	    const container = document.createElement('div')
	    // 向DIV中添加这个el
	    container.appendChild(el.cloneNode(true))
	    // 此时返回container的innerHTML就可以得到该元素即本身的HTML代码
	    return container.innerHTML
	  }
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值