1

我正在创建一个Chrome扩展,它将模拟点击dom中的一个下拉元素,然后再次点击其中一个选项,根据我将作为选项传递一个论点。 澄清:我不是在等待用户的点击,而是想使用Chrome扩展自己创建它。 如何实现?我没有找到任何方法。 这是HTML的相关部分:单击选择元素,然后单击选项

<select class="select select-step-type" name="select-step-type" data-rel="tooltip" title="" data-original-title="Edit Step"> 
<optgroup label="Select a step type"> 
    <option value="warmup" data-step-type="workout-step-warm" class-name=""> 
     Warm up 
    </option> 
    <option value="interval" data-step-type="interval" class-name="workout-step-run" selected=""> 
     Run 
    </option> 
    <option value="recovery" data-step-type="workout-step-recover" class-name=""> 
     Recover 
    </option> 
    <option value="rest" data-step-type="workout-step-rest" class-name=""> 
     Rest 
    </option> 
    <option value="cooldown" data-step-type="workout-step-cool" class-name=""> 
     Cool down 
    </option> 
    <option value="other" data-step-type="workout-step-other" class-name=""> 
     Other 
    </option> 
</optgroup> 

这是我怎么想做到这一点的JS(忽略theHackCode,它只是收集的代码要与网页上执行铬扩展)。

var theHackCode = "document.getElementsByClassName('select-step-type')[0].click(); "; 
theHackCode += "document.getElementsByClassName('select-step-type')[0].options[4].click(); "; 
chrome.tabs.executeScript(null, {code: theHackCode}, function(results) { 
    console.log(results); 
}); 
+0

您需要放置点击事件处理程序。 –

回答

0

你需要试试这个,它会改变你的标签和下垂值。

document.addEventListener('DOMContentLoaded', function() { 
    var obj = document.getElementsByClassName('select-step-type'); 
    for (var i = 0; i < obj.length; i++) { 
     obj[i].addEventListener('change', function(){ 
     alert(this.options[this.selectedIndex].value+"\n"+this.options[this.selectedIndex].text); 
    }, false); 
    } 
}); 
+0

谢谢,但那不完全是我的目标。我需要点击事件自动发生,而不是等待他们从用户到达 – user2652938

+0

你可以看到这个链接,我已经创建了Crome扩展,选择第三类按照您的html https://www.dropbox.com/ S/bnkk1uk3009qbiq /克罗姆-ext.crx?DL = 0 –

相关问题