JS操作WordPress插件返回的HTMLCollection无法修改baseURI属性求助
问题解答
为什么修改baseURI不生效
baseURI 是 DOM Node 接口的只读原生属性,由浏览器根据当前文档的完整地址、页面内<base>标签配置自动计算生成,不支持开发者手动赋值、删除,因此你给test[0].baseURI赋值undefined、null或者空字符串的操作都会被浏览器直接忽略,自然不会生效。
适配需求的解决方案
你可以根据自己的实际业务目标选择对应方案:
- 如果你是想调整该 div 内部所有链接的跳转基准:不需要修改元素的 baseURI,要么直接给内部所有 a 标签补全绝对路径 href(你代码中修改单条 a 标签 href 的逻辑本身是可用的),要么在页面 head 中插入符合你要求的
<base>标签。 - 如果你是想给该 div 附加自定义的基准地址供后续业务逻辑调用:不要占用原生属性,使用自定义属性即可:
// 赋值自定义属性 test[0].setAttribute('data-custom-base', null) // 后续取值 const customBase = test[0].getAttribute('data-custom-base')
额外优化建议
你当前使用的document.getElementsByClassName返回的是动态HTMLCollection,在DOM变化时会自动更新取值,容易出现非预期的下标变化问题,推荐直接用querySelector获取单个目标元素,代码更稳妥:
const targetDiv = document.querySelector('.post-2968') // 直接操作即可,不需要取下标[0] targetDiv.childNodes[0].target = '_blank'
内容的提问来源于stack exchange,提问作者Babak
相关产品推荐
相关产品推荐

