2012-09-14 24 views
0

我很清楚瀏覽器的標準事件觸發機制,但我需要一個JavaScript庫來模擬光標和通過鍵盤的插入點導航。特別是,我需要一個庫,它允許我移動插入點,但也可以處理擴展或摺疊文本的選擇範圍,例如,如果在虛擬箭頭鍵導航時虛擬shift鍵被「按下」。這樣的跨瀏覽器JavaScript庫存在嗎?是否存在用於模擬元素的鍵盤操作的跨瀏覽器JavaScript庫?

這是爲了在瀏覽器自動化庫中使用,所以像Selenium這樣的建議是不合適的。此外,如果可能的話,我想避免依賴大型JavaScript框架(如jQuery)的庫。最後,這需要在一個頁面內注入,所以非JavaScript解決方案將無法滿足我的要求。

假設我有一個HTML頁面,看起來是這樣的:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8" /> 
    <title>keyboard</title> 
</head> 
<body> 
    <input id="editor" value="hello world" /> 
</body> 
</html> 

我希望能夠調用,在JavaScript中,這樣的事情:

function moveCursor() { 
    var editor = document.getElementById("editor"); 
    editor.focus(); 

    // Hypothetical API here. This would need to be 
    // adjusted to be used with the actual library. 
    // Assume the pressKey() is defined as: 
    // 
    // pressKey(element, keyCode, isShiftPressed) 
    // 
    keyboardSimulator.pressKey(editor, keys.END); 
    keyboardSimulator.pressKey(editor, keys.LEFT, true); 
    keyboardSimulator.pressKey(editor, keys.LEFT, true); 
} 

調用此JavaScript函數後,我希望我的頁面中的焦點位於編輯器元素上,並且可以選擇「hello world」值中的「ld」。

回答

0

沒有這樣的圖書館存在。如果實際允許的話,這將是一個巨大的安全漏洞。您唯一能做的就是捕捉擊鍵並對其執行操作,例如,創建特殊熱鍵,當被捕獲時觸發您在javascript中創建的某些特殊功能。

(BTW:一些擴展,例如LastPass的和拉撒路出現發送擊鍵控制,實際上只是設置文本屬性。)

+0

然而,通過選擇範圍非常聰明的操作和設置文本屬性,*是*可以模擬這種行爲。我認爲這不會構成安全風險。我希望有人已經完成了處理邊緣案例的工作,以使這種模擬更加健壯。 – JimEvans

+0

嗯,這是一個有趣的角度。如果您遇到問題或自行解決問題,請告訴我。 (總是在尋找新的自動化技術:) –

+0

是的,我一定會的。根據YUI上的這個頁面,[鏈接](http://yuilibrary.com/yui/docs/event/simulate.html#simulating-key-events),FireFox會很高興地插入關鍵事件。 我很確定Bitovi Syn可能是目前最好的實用解決方案,但它證明很難整合到我的Ember js應用程序中。 –

相關問題