我正在编写一个浏览器扩展,在用户访问的每个页面顶部插入一个横幅。横幅不得具有粘性,不得阻挡任何现有内容。(我的铬扩展)
目前,我正在通过插入每个页面的 contentscript 中的以下 javascript 将横幅内容添加到 DOM:
$content = $('<div id="lb-banner'>blah blah</div>');
$('html:first').addClass('lb-banner-added').prepend($content);
我在正文之前添加内容,以便横幅不受网站样式的影响。然后,为了在不影响任何潜在网站布局的情况下将页面的主要内容下推,我使用了以下样式:
html.lb-banner-added {
position: relative;
margin-top: 32px;
}
#lb-banner {
height: 32px;
width: 100%;
position: absolute;
top: -32px;
display: none;
... other styles...
}
.lb-banner-added #lb-banner { display: block; }
这会将整个 html 向下推,而横幅绝对定位以填充空白空间(在本例中为 32 像素)。
我尝试了其他方法在每个页面的顶部添加横幅。然而,这种方法与迄今为止的大多数网站兼容(甚至许多带有粘性标题的网站)。
然而,这绝对不是最好的解决方案,因为我无法让它在 facebook、twitter、linkedin(有效但阻止某些内容)、gmail/gcalendar/gdoc(有效但导致某些内容被移出窗口)和还有很多。此外,这种方法需要我指定内容的高度,目前还可以,但我更喜欢动态的方法。
笔记:
如果没有我上面展示的样式,横幅仍然会出现在每一页的顶部。但是,这样做也会破坏许多网站(如 google.com)的布局。例如,在 Google 上,横幅只会覆盖黑色导航栏,并且在搜索结果之前会有额外的间距。
这是有问题的 chrome 扩展https://chrome.google.com/webstore/detail/awesome-facts/bjkhdklfbghoadcamlpmkafgmehcmima