要获取 node
参数中的所有 src
或 href
属性,你需要检查 node
是否是一个元素节点(例如 <script>
、<link>
、<img>
等),并根据节点的类型提取相应的属性。
以下是修改后的代码示例,展示如何在 appendChild
方法中实现这一点:
// 保存原始的 appendChild 方法
const originalBodyAppendChild = HTMLBodyElement.prototype.appendChild;
HTMLBodyElement.prototype.appendChild = function (node) {
console.log('A node is being appended to the body:', node);
// 如果 node 是一个元素节点,检查它的 src 和 href 属性
if (node.nodeType === Node.ELEMENT_NODE) {
const src = node.getAttribute('src');
const href = node.getAttribute('href');
// 输出 src 和 href 的值(如果存在)
if (src) {
console.log('Found src:', src);
}
if (href) {
console.log('Found href:', href);
}
}
// 调用原始的 appendChild 方法以执行实际操作
return originalBodyAppendChild.call(this, node);
};
解释:
- 保存原始方法:我们先保存原始的
appendChild
方法,以便后续可以调用。 - 检查节点类型:在添加节点之前,我们确认该节点是一个元素节点 (
Node.ELEMENT_NODE
)。 - 获取属性:使用
getAttribute()
方法获取src
或者href
属性,并进行相应的输出。
这样,当你将任何带有 src
或 href
的元素添加到 <body>
中时,控制台都会输出这些属性值。
内容由零声教学AI助手提供,问题来源于学员提问