2010-10-11 71 views
0

不確定性崩潰在我的web應用程序,我用按Ctrl +箭頭鍵從細胞定位到單元格在一個表中。我的web應用程序的谷歌瀏覽器

所有單元格都包含可見的<span>和隱藏的<input>元素 - 它們的值保持同步。

當單元格被激活時,隱藏<span>,同時顯示輸入。

一切工作只是罰款的Firefox,IE,Opera等。然而當我加載瀏覽器,使用按Ctrl +按Ctrl +右鍵崩潰頁面(我看到了「Aw Snap」頁面)。奇怪的是,Ctrl + 向上Ctrl + 向下工作。

我已經確定的是,下面的代碼是(直接或間接負責的崩潰):

/** 
* Deactivates a cell, hiding its input field, and showing its span field 
*/ 
View.prototype.deactivateCell = function (cell){ 
//Show the span, hide the input 
var label = cell.descendants()[0]; 
var input = cell.descendants()[1]; 
if(label){ 
    label.show(); 
} 
if(input){ 
    //THIS NEXT LINE IN PARTICULAR CAUSES THE CRASH 
    //I've also tried input.style.display = "none"; - same result 
    input.hide(); 
} 
} 

奇怪的是,這個碼是按Ctrl稱爲 + 向上/ ,以及按Ctrl +/ - 但它只是崩潰的/ - 即使具有相同的cell值!

所有這些細胞都有兩個,也只有兩個,後代...而且崩潰與源細胞或目標細胞無關 - 可以從上方移入任何細胞,但不能從左邊。

更奇怪的是什麼;在deactivateCell(cell)方法的末尾添加alert(1);可防止崩潰。把它放在方法的開始沒有任何影響(其他然後顯示警告對話,在崩潰之前)

我試着在測試文件中隔離相關的HTML +此方法 - 我無法重現崩潰。

有沒有人遇到過這個?我應該把它寫成瀏覽器錯誤嗎?有誰知道我可能會如何調試,或嘗試修復它?我沒有那麼模糊的印象,我的Javascript如何能夠讓瀏覽器頭頂,當許多其他網站都很好時。

+0

你能否在另一臺機器上確認這一點? – 2010-10-11 10:33:43

+0

是的 - 我的桌面和我的筆記本電腦。 Chrome的兩個版本都應該是最新的 - 它會在後臺更新自己,不是嗎? – Vladislav 2010-10-11 10:34:32

+0

@Vladislav你可以'輸入'轉儲到控制檯?它總是保證真的是一個輸入字段?是否有一些與輸入元素相關的HTML進行併發更新? – 2010-10-11 10:38:37

回答

1

我不是原型英雄,但我注意到,你調用cell.descendants()而不檢查單元格是否爲空。

另外,你是否隱藏光標所在的當前輸入?如果是這樣,請在隱藏當前的輸入之前嘗試focus()到不同的輸入。

+0

'cell'在調用方法中測試爲非空時非常重要,但是,謝謝 - 這是一個很好的做法。我也嘗試轉移焦點 - 無濟於事。 – Vladislav 2010-10-11 10:50:25

相關問題