You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Tampermonkey添加页面无法访问的HTML内容?

解决Tampermonkey添加HTML不被页面脚本访问的方法

直接往页面DOM里加元素,页面脚本肯定能通过DOM API找到——因为DOM是页面和油猴脚本共享的环境。要实现隔离,最靠谱的方式是使用Shadow DOM,这是浏览器原生的DOM隔离机制,能让你添加的元素处于独立封闭环境,页面脚本无法直接访问。

具体做法:先创建一个容器元素,给它附加**封闭模式(closed)**的Shadow DOM,再把要添加的内容放到Shadow DOM内部,最后将容器挂载到页面:

// 创建容器元素
const shadowWrapper = document.createElement('div');
// 附加封闭模式的Shadow DOM,页面脚本无法获取这个shadowRoot
const shadowRoot = shadowWrapper.attachShadow({ mode: 'closed' });

// 把目标内容添加到Shadow DOM中
GM_addElement(shadowRoot, 'div', {
    textContent: 'success',
    class: 'buba'
});

// 将容器挂载到页面body
document.body.appendChild(shadowWrapper);

这种方式下,页面脚本遍历document.body时只能看到shadowWrapper容器,无法访问其内部Shadow DOM里的div.buba元素——closed模式下外部拿不到shadowRoot对象,自然没法操作里面的内容。

注:不存在100%绝对的隔离(极端场景下页面可能有特殊探测手段),但Shadow DOM是当前实现该需求最标准、最可靠的方案。

内容的提问来源于stack exchange,提问作者Andrey Vorobyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:52:04