当前缺乏脚本风格实际上是一场彻底的灾难:-(
addStyle
只是12 行简单的代码,您可以轻松地将其复制粘贴到您的脚本中。 甚至是 11,因为不需要这一行:
style.setAttribute('type', 'text/css');
谢谢 !
然而,这让当前的缺乏更加难以理解......
@arantius我在尝试在具有 CSP 且不允许“self”作为来源的页面上加载用户样式时遇到问题——所以我不能只添加<style>
元素。 GM 可以通过公开一个调用tabs.insertCSS()
( ref ) 的 API 来解决这个问题。 想法?
我在尝试在具有 CSP 且不允许“self”作为源的页面上加载用户样式时遇到问题——所以我不能只添加一个
我向 Stylish 提交了一个错误,因为那是我遇到问题的地方。 尽管如此,认为这里可能值得考虑,因为 GM 的当前 API 主要公开了绕过某些内容脚本限制或其他的特权 WebExt API,而 insertCSS 是其中之一。
在链接的错误中,我不知道“如果将 CSS 捆绑在扩展程序中,这应该可以工作......”的确切含义。 动态节点插入可能不起作用。
我将重新考虑 CSP 安全功能。 (但在一个非常低的优先级......)
原则上,这也可以通过将消息传递给后台脚本并运行tabs.insertCSS来实现,而无需等待 FF。 但是一旦实现了该错误,就没有必要跳过这些障碍。
@arantius 1415352说“这应该适用于 HTML style
属性和 HTML <style>
节点的内容。”
关于 polyfill:自从我听说 GM_addStyle 在砧板上,我实际上只用了 3 个命令来替换它。 我没有测试 HEAD,而是将 STYLE 直接添加到 documentElement,它始终存在,即使在文档开始时也是如此。
var style = document.createElement('style'); var style.textContent = `
<Stylesheet here>
`; document.documentElement.appendChild(style);
这是我很少使用的函数版本,它有 5 行:
addStyle = function (css) {
var style = document.createElement('style');
style.textContent = css;
document.documentElement.appendChild(style);
return style; //optional, but convenient for changing the styling later.
};
我已经在 Firefox 上的 GM 3 和 4 以及 Chrome 上的 TamperMonkey 中测试过这个,没有问题,尽管不是标准的。 如果 HEAD 还没有加载,我更喜欢非标准而不是让它失败(这种情况经常发生。我有抱怨。)
我还注意到 UserStyles,org 在其自动生成的用户脚本中使用我的方法作为后备。
我没有测试 HEAD,而是将 STYLE 直接添加到 documentElement,它始终存在,即使在文档开始时也是如此。
在 FF57 和 GM4 中,documentElement 在文档启动时并不总是可用,至少在我的机器上是这样。
由于 GM 4(目前)的文档启动发生得比以前更晚,我
不知道这怎么可能。 但是如果 documentElement 不存在,
那么两者都不是 HEAD 元素,因为 documentElement 是
HTML 元素。 这是包含 HEAD 元素的内容。 所以我的方法不是
更糟。
我承认我没有在 Fx 59 上测试过最新的开发,它使用了不同的
获取文档启动的方法,但我希望 documentElement 存在。 如果
不,那么各种脚本都会中断。 你不能对
文档之前有一个文档元素。 我什至不认为你可以设置
突变观察者。
我肯定希望文档元素存在于
注入任何内容脚本。
在星期二,2017年12月26日在下午6时26分,CoolCmd [email protected]写道:
我没有测试 HEAD,而是直接将 STYLE 添加到
documentElement,它始终存在,即使在文档开始时也是如此。
在 FF57 和 GM4 中,documentElement并不总是在
文档启动,至少在我的机器上。—
您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/greasemonkey/greasemonkey/issues/2724#issuecomment-354028964 ,
或静音线程
https://github.com/notifications/unsubscribe-auth/AFNSrmb5eKj-nY9vnR3d94bq5kIjaz9Tks5tEY7PgaJpZM4QnG03
.
我什至不认为你可以设置突变观察者。
您可以将变异观察者附加到document
。
最有用的评论
谢谢 !
然而,这让当前的缺乏更加难以理解......