模糊 body 元素及其内容,然后在顶部显示一个未模糊的元素

Blur the body element and its contents, then show an unblurred element over top

所以,我创建了一个 chrome 扩展,它的工作方式类似于 tampermonkey,只是它使用 cookie 来存储脚本。

现在,为了输入 cookie 的代码,我使用了通过 prompt() 打开提示的组合键。我想改为使用自定义元素显示在当前网页的模糊视图上。我也不想移动任何其他元素来做到这一点。

到目前为止,这是我的代码:

a = String(decodeURIComponent(document.cookie.split("@=")[1].split(";")[0]));
b = new Date().getFullYear(); b = new Date().toGMTString().replace(b, ++b);
c = document.createElement("script"); d = document.head;

a[0] == "@" ? c.src = a.substr(1) : c.innerText = a;
d.insertBefore(c, d.firstChild);

addEventListener("keypress", function (i)
{
  if (i.which == 81 && i.shiftKey == true)
  {
    e = encodeURIComponent(prompt("Usage: Link - @[URL] | Script - [Raw JS]"));
    document.cookie = "@=" + e + "; expires=" + b; location.reload();
  };
});

有什么想法吗?

编辑:更好的主意

我知道您不想插入更多元素,但也许只是一个?这应该有效。

让脚本像这样改变您的结构:

<html>
<body>
    <div id="blur">
    // original page content
    </div>

    <div id="floatingModal">
    // your content
    </div>
</body>
</html>

然后你模糊了新的 div

div#blur{
    filter: blur(5px);
}

您将必须输入那个 div,但这应该可以了。

wOxxOm 建议的另一种方法:

截取页面的屏幕截图并使用 CSS filter: blur(5x).

对其进行模糊处理

有关如何使用 JavaScript 截屏的信息可在此处找到:Using HTML5/Canvas/JavaScript to take screenshots