OpenClinica 用户手册/其他浏览器
2013 年 4 月,Firefox 发布了新版本 v20。使用此版本与 OpenClinica 不兼容,例如 SubjectMatrix 中的过滤不可用;矩阵中的绿色“页面按钮”不起作用;无法再次打开状态为 DataEntryStarted 的 CRF 等等。
此页面旨在提供一些背景信息。
建议的解决方案尚未经过全面测试。
因此,非常感谢您的补充和修改。
此故障的主要原因是包含 JavaScript 函数的库:prototype.js。此库至少可以追溯到 2007 年,是 jquery 的竞争对手。Prototype 可能包含在内是为了某些“特殊效果”,并且至少由另一个库调用:scriptaculous.js。
prototype.js 中定义了多个函数,它们基于 DOM 属性和方法。其中至少一个已被 FireFox v20 弃用,这就是故障的原因。
像 prototype.js 这样的库本质上只不过是一个包含 JavaScript 代码的大型文本文件(因此有后缀)。它位于\tomcat\webapps\OpenClinica\includes 中。要解决此问题,您可以访问 http://prototypejs.org/download/ 下载最新版本(目前为 1.7.1)并将其保存为prototype171.js。然后停止 tomcat,转到上面描述的目录,将prototype.js 重命名为prototype151.js,将prototype171.js 复制为prototype.js。重新启动 tomcat,清空 Firefox 的缓存,您就可以再次使用了。
但不幸的是,您还没有完成,因为现在 InternetExplorer 拒绝正常工作。另一个冲突是这个问题的核心。我们必须将 jquery 从 1.3.2 升级到 1.9.1。
趁此机会,我们不妨将blockUI 升级到jquery.blockUI.2.59.js。
一种完全不同的方法是“修复”prototype.js
prototype 1.5.1 中的罪魁祸首大约在第 1256 行。
if (Prototype.BrowserFeatures.XPath) {
document._getElementsByXPath = function(expression, parentElement) {
var results = [];
var query = document.evaluate(expression, $(parentElement) || document,
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0, length = query.snapshotLength; i < length; i++)
results.push(query.snapshotItem(i));
return results;
};
如果我们将其更改为
rt$Bugfix = {$: $}
if (Prototype.BrowserFeatures.XPath) {
document._getElementsByXPath = function(expression, parentElement) {
var results = [];
var query = document.evaluate(expression, rt$Bugfix.$(parentElement) || document,
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0, length = query.snapshotLength; i < length; i++)
results.push(query.snapshotItem(i));
return results;
};
所以实际上我们改变了两件事
- 我们添加了一行rt$Bugfix = {$: $}
- 我们将$(parentElement) 替换为rt$Bugfix.$(parentElement)
通过这种方式,我们没有改变任何东西,我们只是重命名了有问题的部分。Firefox 再次对 prototype 感到满意。
最好的建议是:不要修复您的生产环境 OpenClinica。等待官方版本发布。这将经过 OpenClinica 的全面测试,您将对可靠性有一定把握。指示您的用户暂时不要使用 FF,而要坚持使用 InternetExplorer。
但是,您可以在开发环境中进行更改,并查看是否一切正常。
为了避免这些问题,OpenClinica 建议您不要更新到 Firefox 20。许多人可能默认将 Firefox 设置为自动更新,但您可以通过打开 Firefox 并转到“工具”>“选项”>“高级”>“更新”,然后选择“检查更新,但让我选择是否安装它们”或“从不检查更新”来更改这些设置。
如果您的 Firefox 已经升级到版本 20,您可以通过从 ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/19.0/ 下载 Firefox 19 安装文件,并按照以下说明操作来回滚更改。
- 下载适合您的操作系统和语言的 Firefox 19 安装文件。
- 断开计算机与互联网的连接。
- 运行 Firefox 19 安装文件。
- 安装完成后,打开 Firefox,转到“工具”>“选项”>“高级”>“更新”。
- 选择“检查更新,但让我选择是否安装它们”或“从不检查更新”。
- 重新连接计算机到互联网。
完成更改后,您可以使用 Chrome 和 Safari!是的,它一直都在,但被一个库阻碍了。现在您可以使用您最喜欢的浏览器(至少是我最喜欢的浏览器)。
这意味着您也可以在 iPad 上运行 OC 吗?好吧,不完全是。我们对它进行了快速分析,大多数界面都可以使用,但有一个重大例外:SubjectMatrix 中的黄色注释。如果您能忍受这一点,并通过菜单或“查看主题”来安排您的事件,那么您可以在 iPad 上使用 OC。很酷。
我们在 Internet Explorer 9 中始终打开控制台的情况下工作,发现
- prototype.js 中存在大量错误,例如“fireEvent”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
- tab.js 中的错误:此库可能已过时;否则,可以通过声明 TabNumber 来解决此错误
- 在 ChooseCRFVersion 中,IE 中的表格外观非常奇怪;可以通过更改样式表中名为 shaded_table 的类来解决
- 在 ViewRuleAssignment/Manage Rules 中:SCRIPT5007:无法获取属性“msie”的值:对象为空或未定义;不知道
我们在 Firefox 中始终打开 Firebug 控制台的情况下工作,发现
- prototype.js 中的错误,“element.dispatchEvent(event)”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
- prototype.js 中存在大量错误,例如“fireEvent”或“dispatchEvent”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
要启用控制台:从菜单中选择“首选项”,点击“高级”,勾选“在菜单栏中显示开发菜单”。打开 OpenClinica 并按 Ctrl-Alt-I
- prototype.js 中存在大量错误,例如“fireEvent”或“dispatchEvent”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
- 在 chooseCRFVersion 中:对 spacer.gif 的引用错误,因此图标未正确对齐
在版本 12.15 中测试 要启用控制台:按 Shift-Ctrl-I
- prototype.js 中存在大量错误,例如“fireEvent”或“dispatchEvent”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
GET [...]/pages/images/spacer.gif 404 (未找到) 在 /pages/studymodule 中