提前感谢所有人 -
所以我一直在讨论这个问题已经有一段时间了,并且已经烧掉了我所有的选择。我目前取消css请求的方法是在nsIWebProgressListener.onStateChange中使用nsIRequest.cancel。这种情况大部分时间都有效,除非事情有点滞后,否则一些人会在我到达之前滑过并跳出负载组。这显然是一个肮脏的解决方案
我已阅读以下链接,尝试更好地了解如何在创建nsIRequest之前禁用css ...没有骰子。
https://developer.mozilla.org/en/Document_Loading_-_From_Load_Start_to_Finding_a_Handler https://developer.mozilla.org/en/The_life_of_an_HTML_HTTP_request https://developer.mozilla.org/en/Bird“s_Eye_View_of_the_Mozilla_Framework
如何通过演示文稿对象/界面禁用css?这可能吗?在nsIDocShell里面有一些属性,暗示你可以通过浏览器docshell禁用css - allowPlugins,allowJavascript,allowMetaRedirects,allowSubframes,allowImages。
有什么建议吗?
谢谢,
萨姆
答案 0 :(得分:2)
禁用样式表的菜单选项使用函数
setStyleDisabled(true)
因此,只要创建新的浏览器选项卡,您就可以调用此函数。仍然从服务器请求样式表,但不应用。这个函数不是很复杂,并且不会破坏nsIRequest,source:
function setStyleDisabled(disabled) {
getMarkupDocumentViewer().authorStyleDisabled = disabled;
}
挖掘Web Developer Toolbar源代码我注意到他们的“禁用样式表”功能循环通过所有document.styleSheets
并将disabled
属性设置为true
,如:
/* if DOM content is loaded */
var sheets = document.styleSheets;
for(var i in sheets){ sheets[i].disabled = true; }
因此,如果关键是不对页面应用CSS,则上述解决方案之一应该有效。但如果你真的需要停止从服务器下载样式表,我很害怕nsIRequest
拦截是你唯一的选择。
答案 1 :(得分:1)
将permissions.default.stylesheet设置为2并vo!
您实际上可以使用权限管理器逐个主机地阻止或允许样式表。
答案 2 :(得分:0)
不幸的是,似乎没有像allowImages这样的简单标志。 bugzilla为此添加https://bugzilla.mozilla.org/show_bug.cgi?id=340746。您现在可以使用新的bugzilla投票功能对其进行投票。您也可以将自己添加到CC列表中,以便在有人工作时通知您。
相关的请求只是给我们基本的HTML解析支持,这可能是你想要做的。不幸的是,它也不受支持,但您可以在https://bugzilla.mozilla.org/show_bug.cgi?id=102699投票/跟踪bugzilla。
因此@pawal建议,唯一可行的解决方案似乎是某种拦截。这是一个链接,讨论拦截的基本知识,至少让你/我们开始https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads。它列出了我在下面列出的几个选项。
这些前几个似乎只是在页面/文档级别,所以我认为它们没有帮助:
留下了另外两个我尚未尝试的人。它们全局工作,因此您需要将它们过滤到您关心的浏览器/页面。