我可以通过 javascript 在 mozilla 中更改 about:config 吗?

Posted

技术标签:

【中文标题】我可以通过 javascript 在 mozilla 中更改 about:config 吗?【英文标题】:Can i change about:config in mozilla via javascript? 【发布时间】:2012-12-04 14:28:10 【问题描述】:

您好,我正在开发一个 html 5 游戏,在 Chrome 中动画看起来很棒,但在 Firefox 中不行!我在互联网上搜索,我找到了一个解决方案,我需要更改 about:config 中的一些设置,它们是:

webgl.force-enabled=true
webgl.msaa-force=true
layers.acceleration.force-enabled=true
gfx.direct2d.force-enabled=true
stagefright.force-enabled=true

我手动更改了这些设置,动画在 Firefox 中看起来很棒。现在我的问题是如何使用 javascript 来做到这一点?有可能吗?

【问题讨论】:

希望不会! 至少不是来自任意网站。 不,如果他们可以随意更改浏览器设置,那对所有网络犯罪者来说不是很好! 为什么投反对票和投票结束?这是一个合法的问题,写得很清楚,并对此进行了一些研究。这是一个建设性的问题。虽然您可能不希望浏览器实现所要求的行为,但这肯定是一个合法的问题。 @tkone 我的评论的意思是:如果一个网站有办法在全球范围内修改about:config,那么这是一个巨大的安全威胁。 【参考方案1】:

MozillaZine 论坛中的讨论建议按如下方式创建书签(说明和代码从那里复制):

    在 Firefox 安装文件夹的 res 目录下创建一个文件,例如“proxy.htm”,并将其放入其中:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
       <title>Proxy Toggle</title>
       <script type="text/javascript">
       // <![CDATA[
       function loaded()  
          netscape.security.PrivilegeManager
          .enablePrivilege("UniversalBrowserAccess UniversalXPConnect");
          var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                      .getService(Components.interfaces.nsIPrefBranch);
          if (prefs.getIntPref("network.proxy.type") == 0) 
             prefs.setIntPref("network.proxy.type", 1);
          
          else 
             prefs.setIntPref("network.proxy.type", 0); 
          
          self.close();
       ; 
       self.onload = loaded;   
       // ]]>
       </script>
    </head>
    <body>
       Please wait...
    </body>
    </html>
    

    然后制作一个小书签来切换代理首选项的状态,并将其作为位置:

    javascript: void(window.open('resource:///res/proxy.htm'));
    

见:http://forums.mozillazine.org/viewtopic.php?f=7&t=87755

【讨论】:

感谢您的回答实际上试图帮助 OP 解决他们的问题。 @tkone 不幸的是,在我编辑之前,这不是一个实际的答案。仅链接的答案经常从 *** 中删除,因为链接可能会断开并且答案变得无用。我们鼓励我们编辑这些答案以添加链接中相关部分的引号,或将它们标记为不是答案。 @liquidboy 如果您觉得满意,请不要忘记接受答案。请注意答案旁边的空复选标记。 很不错的把戏,但我仍然不得不投反对票,因为在这个问题的背景下这是一个非常糟糕的建议(见我的回答)。 @WladimirPalant 不好的建议,但是回答了这个问题。问题不是“这是个好主意”,而是“我该怎么做”。评论它是坏建议是好的。否决票(赞成您的回答)有点小意思。回答问题很重要;甚至提供建议也很重要。但是,对诚实地解决所提问题的合法答案投反对票似乎有点奇怪。【参考方案2】:

您不应该更改这些设置 - 不要在您的计算机上,尤其是不要在其他人的计算机上。无论如何,这些设置将被启用,假设硬件和驱动程序能够处理它们。 force-enabled 设置仅用于测试,打开它们可能会导致不稳定(Firefox 崩溃、图形驱动程序崩溃)。

在您的情况下,Firefox 没有自动启用硬件加速的最可能原因是驱动程序过时 - 您应该为您的显卡安装当前驱动程序并建议其他人也这样做。

【讨论】:

以上是关于我可以通过 javascript 在 mozilla 中更改 about:config 吗?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript Object.keys()方法替代与IE8的兼容性

sh 从Firefox的cookies.sqlite格式转换为Netscape cookie http://kb.mozillazine.org/Cookies.txt http://kb.mozil

检查文本是不是在字符串中

使用 Phonegap 复制/粘贴剪贴板 iPhone

js String

新版Firefox 63浏览器两大新功能来袭:指纹识别和加密货币保护