跳轉到內容

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 中

華夏公益教科書