Firefox addon 为什么firefox插件中的用户脚本要比greasemonkey中的相同脚本慢?

Firefox addon 为什么firefox插件中的用户脚本要比greasemonkey中的相同脚本慢?,firefox-addon,greasemonkey,firefox-addon-sdk,userscripts,Firefox Addon,Greasemonkey,Firefox Addon Sdk,Userscripts,我一直在努力将Greasemonkey用户脚本转换为Firefox插件。我正在使用页面修改模块,它看起来像预期的那样工作 除了速度明显较慢之外 第一个较慢的操作是加载脚本。尽管我已将我的contentScriptWhen设置为ready,但xpi版本(其中插入了一个用于切换其操作的复选框)加载和显示其复选框的时间要长得多 第二个较慢的动作是切换动作。切换的效果明显需要更长的时间才能执行 这个脚本很长而且很复杂,所以我没有把它包括在这里。但一般来说,它使用jQuery(粘贴到引用的contentS

我一直在努力将Greasemonkey用户脚本转换为Firefox插件。我正在使用页面修改模块,它看起来像预期的那样工作

除了速度明显较慢之外

第一个较慢的操作是加载脚本。尽管我已将我的
contentScriptWhen
设置为
ready
,但xpi版本(其中插入了一个用于切换其操作的复选框)加载和显示其复选框的时间要长得多

第二个较慢的动作是切换动作。切换的效果明显需要更长的时间才能执行

这个脚本很长而且很复杂,所以我没有把它包括在这里。但一般来说,它使用jQuery(粘贴到引用的
contentScriptFile
)对页面进行大量修改。这些MOD通过上述切换开关打开和关闭


有人能想出一般原因吗?当通过XPI插件加载同一个用户脚本时,会比通过Greasemonkey加载同一个脚本时慢得多且明显得多?

页面MOD是不同的用户脚本,前者更具代理性且更安全,但在某些情况下也更慢。你的页面模版写得越好,它就越有好处。

新的SDK创建附加组件的开销相当大。我不记得Greasemonkey现在是否缓存了信息(IIRC Scriptish有),但你的插件肯定不会缓存信息,除非你已经内置了。。。使用jQuery的方式可能会大大降低速度。(1) 当开始时设置
,(2),只包括jQuery,不要粘贴它,例如:
contentScriptFile:[data.url(“jQuery-1.7.2.min.js”),[data.url(“my content script.js”)]
,(3)然后使用标准的
$(文档)。准备好了吗(…
我的内容脚本.js
中。另外,确保除非您愿意,否则不要在iframes中运行。这应该是答案,我真的很想知道这些措施是否有帮助。另一个选择:使用zepto而不是jQuery,因为它小得多,但功能(大致上)很好同样的。@BrockAdams非常感谢您的建议。我尝试了所有建议,但不幸的是,主要的速度仍然很慢。它确实加快了向页面中插入元素的速度,但我上面提到的切换操作仍然很慢。如果您有任何其他想法,请告诉我。thx!(哦,我没有在iframes中运行)切换动作是否比Greasemonkey脚本慢?似乎有疑问……如果没有代码检查,可能无法为您提供更多帮助(这不是它的目的),或者除非您可以将问题归结为一个小的、自包含的示例。毫无疑问,切换操作速度较慢。我知道这没有意义。您可能会想起我最近提出的另一个关于使用console.time()的问题在FF插件上…无法让它工作,所以我还没有量化差异。我试图将其归结为一个可行的例子,但还没有想出什么。如果我这样做,我会将其作为一个问题发布。thx