要获取 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助手提供,问题来源于学员提问




