百度地图,高德地图,腾讯地图形成了垄断联盟,对开发者不管使用量多少,一律5万/年的授权费,这对中小开发者带来了很大负担。如有不从,就直接将配额降到个位数。作为开发者,不是想白嫖,愿意为使用量按需付费,但拒绝一刀切式的规则,尤其各个厂商串通起来的垄断规则。
百度地图会通过高亮如下的未授权文字来逼迫你就范,这些红色的文字无法用普通的css样式display:none来隐藏。
经过仔细分析后,发现“未授权”文字是通过Shadow Element来实现,并通过设置成private来阻止外界对其内容的修改。百度的方案看似无懈可击,但还有一种方法来实现隐藏这些文字。那就是在百度地图渲染前,劫持attachShadow接口调用,向其注入隐藏这些文字的样式代码。代码如下:
<script>
let originShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function (...args) {
const shadowRoot = originShadow.call(this, ...args);
let style = document.createElement("style");
style.innerHTML = "div { display: none !important; }";
shadowRoot.appendChild(style);
return shadowRoot;
};
</script>
请试试吧,希望能帮助被这个问题困扰的你