2017-09-18 76 views
0

我正在嘗試編寫一個簡單的JavaScript代碼(通過Chrome擴展注入頁面),這將打開HTML選擇控件的選項列表(用於交互式用戶看到),所以我想過模擬用戶點擊控件。我可以通過JavaScript觸發BUTTON上的點擊事件,但是SELECT控件拒絕了我的嘗試。無法模擬用戶通過JavaScript單擊HTML選擇控件

function triggerClick(domElmId) { 
    let domElm = document.getElementById(domElmId); 
    triggerEvent(domElm, 'mouseover'); 
    triggerEvent(domElm, 'mousedown'); 
    triggerEvent(domElm, 'click'); 
    triggerEvent(domElm, 'mouseup'); 
} 
function triggerEvent(domElm, eventName) { 
    let options = {pointerX: 0, pointerY: 0, button: 0, ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, bubbles: true, cancelable: true}; 
    let eventType = 'MouseEvents'; 
    let oEvent = null; 
    oEvent = new MouseEvent(eventName, options); 
    domElm.dispatchEvent(oEvent); 
} 

代碼示例:https://codepen.io/anon/pen/mBegaq

任何想法?

回答

0

瀏覽器不允許在javascript中擴展<select>。然後只能通過點擊鼠標進行擴展。

但是,如果你真的需要這樣做。有一個解決方案:https://code.google.com/archive/p/expandselect/

這通過創建另一個<select>與多個選項一次顯示的作品。然後將其放置在舊控件上。

或者,看看這個問題的一些想法:Is it possible to use JS to open an HTML select to show its option list?

+0

謝謝!你知道這種行爲是否是特定於SELECT控件的,或者是否存在其他像拒絕模擬JS點擊一樣的HTML控件? –

+0

好問題。我不太確定說實話。 'select'是我迄今爲止唯一遇到的 – DNKROZ

相關問題