- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个为 Firefox 3.6 编写的附加组件,现在我正在将其升级到 Firefox 4.0,同时尝试使其与 3.6 兼容。有没有人有尝试这样做的经验,或者关于如何在代码变得太意大利面条式的情况下做到这一点的技巧?
在某些地方,保持它与两个版本兼容意味着要做这样的事情:
.myAddonClass {
-moz-background-size: 100% 100%; /* Fx 3.x */
background-size: 100% 100%; /* Fx 4.x */
}
这会在两个版本中产生 CSS 警告。我可以忍受这一点。我还在其他地方做类似的事情:
/** get the current version of this addon */
function getVersion() {
var version;
if (Application.extensions) { // Fx 3.x
version = Application.extensions.get('myaddon@example.com').version;
}
else { // Fx 4.x
Components.utils.import('resource://gre/modules/AddonManager.jsm');
AddonManager.getAddonByID('myaddon@example.com', function(addon) {
version = addon.version;
});
sleepUntil(function() {
return version;
}
}
return version;
}
(其中 sleepUntil 是一个使用 Thread.processNextEvent
technique 的实用函数)
检查是否定义了 Application.extensions
似乎比直接检查 Application.version
字符串更干净,但这种方法可能存在一些我不知道的缺陷关于?
我在尝试将内容插入网页时也遇到了问题。在一种情况下,doc.body.appendChild
在 3.x 中工作,但在 4.x 中不行,所以我尝试这样做:
try { // Fx 3.x
doc.body.appendChild(myElement);
}
catch (e) { // Fx 4.x
let span = doc.createElement('span');
doc.body.appendChild(span);
span.innerHTML = outerHTML(myElement);
}
上面的代码不起作用,但如果我在 doc.body.appendChild(myElement)
之前插入 throw new Error('')
,那么它就会起作用工作,表明在 Firefox 4 中,appendChild
调用显然会在抛出错误之前以某种方式修改 myElement
。我确信我可以弄清楚如何让这个特定的代码片段工作,但我担心我还会遇到更多这样的问题,所以我想看看其他人是否已经经历过类似的过程,并且有我应该注意的任何提示。
很抱歉问了这么长的问题。 这就是我真正要问的:
if (Application.extensions) ...
或 try/catch 所做的那样)或仅检查是否更好Application.version
是以“3”还是“4”开头?最佳答案
What advice do you have for trying to keep an addon compatible with both Firefox 3 and Firefox 4 at the same time?
我建议为两个最新的主要版本使用单个 XPI。使用旧版本的人是一个失败的案例,并且为不同的“事件”版本提供两个 XPI 会令人困惑(我最近没有尝试过 AMO 呈现此方式的方式,但这是我的旧印象)。
What do you think about the idea of branching the code so that we have one version for 3.x and another for 4.x? We would then have to apply any new features to both versions, and test them in both versions, etc.
只有当代码变得太意大利面条时我才会这样做。作为一名爱好者,我会停止更新旧版本,将其留给使用旧 Firefox 版本的人使用。您可以在 AMO 上查看扩展程序的统计信息,以检查新版 Firefox 的采用率(即使统计信息页面不太好用。)
In general, is it better to test for the presence of the specific feature you want (like I did with if (Application.extensions) ... or try/catch) or to just check whether Application.version starts with '3' or '4'?
基于功能的分支在这里并不重要,因为您处理的是一组固定的主机应用程序,与网页不同。
但请记住可能的副作用:
附注
1) 为了避免有关未知属性的 CSS 警告(如果有很多),您可以通过 appversion in chrome.manifest 对不同版本使用不同的样式。
2) 我认为 Thread.processNextEvent 技术很危险,因为它会阻止调用堆栈展开,直到您完成为止。
关于firefox - 升级插件以与 Firefox 4.0 兼容,但也尝试使其与 3.x 兼容。建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475060/
我已经为桌面和移动 Firefox 开发了一些 Firefox 插件(扩展),但现在我无法将插件/扩展安装到在 Firefox OS 中运行的浏览器中(我正在使用模拟器插件)。请注意,我不想创建一个传
可以将选项卡/网址从移动 Firefox 发送到桌面 Firefox 浏览器,但是否可以以相反的方式执行此操作?从桌面版 Firefox 到移动版 Firefox,并像其他方向一样自动加载。我找不到除
我想等待 Firefox-Browser-Events (sessionstore-windows-restored, user-interaction-inactive,..) 以清除历史记录。我的
我在公司网络中,想为 Firefox 安装一些开发人员工具。不幸的是,政策禁止 Firefox 直接访问互联网,但还有其他浏览器可以访问互联网。现在:如何在没有 Firefox 的情况下直接下载 xp
是否有用于在 firefox 中执行选择性缓存的插件或方法?我可以disable caching entirely ,但我仍然希望能够缓存一些需要几秒钟才能加载的大型 javascript 库 (ex
我目前正在将 Chrome 扩展程序转换为 Firefox 插件,并希望复制 chrome.storage.sync 功能。 但是,我无法使用 simple-storage 找到是否由 Firefox
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
所以,我使用这个代码: var options = { enableHighAccuracy: true, timeout: 2000, maximumAge: 100 }; navi
有没有办法打开 Firefox 并强制它在启动时加载临时加载项(webextension)?通常我必须手动去about:debugging并选择我硬盘上的扩展名。我正在寻找一个可以在加载 Firefo
我正在密切关注教程 here当我尝试创建 Firefox 扩展时。我的扩展有以下树: backtosearch +-chrome +-content backtosearch.
如何从代码中正确地重启 firefox(没有任何“恢复 session ”的东西并且使用与以前相同的窗口)? 我知道 bash 脚本进程中“firefox-bin”的 pid,并且我已将自定义插件加载
自从 Firefox 的最后几次更新以来,我们心爱的 Firebug 已集成到 Firefox 开发人员工具中,并且包括我在内的很多人 don't like what happened到 Firebu
当你在某处上传图片时,在使用chrome时,你可以看到状态栏实际上显示了上传的“状态”,即上传完成的百分比。 Firefox 的状态栏有没有办法显示这个上传状态? 最佳答案 用谷歌搜索这个,发现这个:
例如 Chrome 保存在这里:~Library/Application Support/Google/Chrome/Default/Current Tabs和 Safari 在这里 ~/Librar
当火狐开发者版推出时,我很高兴,我可以使用WebIde、响应式设计工具、滴管等……今天我受够了。 里面有很多bug,我就不一一列举我和我的同事发送和批准了多少bug了…… 我在 google 中搜索过
我在 Ubuntu 上使用 Firefox,版本 39.0。我正在尝试调试一个附加组件,并希望在 chrome 权限下运行一些 JavaScript。根据 this page我应该能够在浏览器控制台中
几天前,我更改了我的网站的图标:打开网站后,它可以很好地工作: 我的网站也在我的书签中,但是显示了旧的收藏夹图标: 我已经看过here,但是答案并没有解决我的问题。 解决方法可能非常简单,但是到目前为
我正在使用web API从Firefox开发一个 native 消息传递应用程序。该扩展应该调用一个解析stdin的应用程序,然后基于它解析的一些数据调用我的另一个rust应用程序,但是出于显而易见的
在 Firefox 中有插件和扩展。你能解释一下为什么这些插件有不同的名称和标签吗?它们是否差异如此之大,以至于需要不同的名称?我认为区分这些东西有点不自然,扩展具有越来越多的功能,与插件相比它们缺少
我正在使用附加构建器和附加 SDK 编写 Firefox 扩展。到目前为止,我已经能够解决任何限制,而无需迁移到 XUL。但是,我遇到了障碍。 我的扩展程序有一个长时间运行的进程,可能会阻塞,因此我需
我是一名优秀的程序员,十分优秀!