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 中