跳转到内容

OpenClinica 用户手册/其他浏览器

来自维基教科书,开放的世界中的开放书籍

Firefox v20

[编辑 | 编辑源代码]

2013 年 4 月,Firefox 发布了新版本 v20。使用此版本与 OpenClinica 不兼容,例如 SubjectMatrix 中的过滤不可用;矩阵中的绿色“页面按钮”不起作用;无法再次打开状态为 DataEntryStarted 的 CRF 等等。

此页面旨在提供一些背景信息。

建议的解决方案尚未经过全面测试。

因此,非常感谢您的补充和修改。

此故障的主要原因是包含 JavaScript 函数的库:prototype.js。此库至少可以追溯到 2007 年,是 jquery 的竞争对手。Prototype 可能包含在内是为了某些“特殊效果”,并且至少由另一个库调用:scriptaculous.js。

prototype.js 中定义了多个函数,它们基于 DOM 属性和方法。其中至少一个已被 FireFox v20 弃用,这就是故障的原因。

如何修复?选项 A

[编辑 | 编辑源代码]

像 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

如何修复?选项 B

[编辑 | 编辑源代码]

一种完全不同的方法是“修复”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;
  };

所以实际上我们改变了两件事

  1. 我们添加了一行rt$Bugfix = {$: $}
  2. 我们将$(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 安装文件,并按照以下说明操作来回滚更改。

  1. 下载适合您的操作系统和语言的 Firefox 19 安装文件。
  2. 断开计算机与互联网的连接。
  3. 运行 Firefox 19 安装文件。
  4. 安装完成后,打开 Firefox,转到“工具”>“选项”>“高级”>“更新”。
  5. 选择“检查更新,但让我选择是否安装它们”或“从不检查更新”。
  6. 重新连接计算机到互联网。

其他奖励:Chrome 和 Safari

[编辑 | 编辑源代码]

完成更改后,您可以使用 Chrome 和 Safari!是的,它一直都在,但被一个库阻碍了。现在您可以使用您最喜欢的浏览器(至少是我最喜欢的浏览器)。

这意味着您也可以在 iPad 上运行 OC 吗?好吧,不完全是。我们对它进行了快速分析,大多数界面都可以使用,但有一个重大例外:SubjectMatrix 中的黄色注释。如果您能忍受这一点,并通过菜单或“查看主题”来安排您的事件,那么您可以在 iPad 上使用 OC。很酷。

我们在 OC 3.1.3.1 中发现的

[编辑 | 编辑源代码]

Internet Explorer

[编辑 | 编辑源代码]

我们在 Internet Explorer 9 中始终打开控制台的情况下工作,发现

  • prototype.js 中存在大量错误,例如“fireEvent”:这些错误几乎肯定可以通过在包含 jquery 脚本时使用 noconflict 选项来解决
  • tab.js 中的错误:此库可能已过时;否则,可以通过声明 TabNumber 来解决此错误
  • 在 ChooseCRFVersion 中,IE 中的表格外观非常奇怪;可以通过更改样式表中名为 shaded_table 的类来解决
  • 在 ViewRuleAssignment/Manage Rules 中:SCRIPT5007:无法获取属性“msie”的值:对象为空或未定义;不知道

Firefox v20

[编辑 | 编辑源代码]

我们在 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 中

华夏公益教科书