2017-01-02 11 views
2

我写对网页的Tampermonkey代码像ConverTo
它应该在下拉自动选择第二个选项:Tampermonkey选择一个下拉值。它没有ID或名字,只有一个班级?

<select class="format-select"> 
    <option value="mp3">MP3</option> 
    <option value="mp4">MP4 (video)</option> 
</select> 

,网页几秒钟后满载。
但没有任何反应。

我的代码:

...... 
// @match  https://www.converto.io/* 
// @require http://code.jquery.com/jquery-1.11.0.min.js 
// ==/UserScript== 

$(document).ready(function(){ 
setTimout(test(),10000); 
function test() 
{ 
    $(".format-select").val('mp4'); 
} 
})(); 

请帮帮忙!

回答

2

请参阅Choosing and activating the right controls on an AJAX-driven site
许多AJAX驱动的控件不能被改变;他们还必须接收关键事件,为页面设置所需的状态。

ConverTo情况下,选择似乎期待

  1. click事件。
  2. 值改变。
  3. 变化事件。

你会发送序列与这样的代码完成,工作脚本:

// ==UserScript== 
// @name  _ConverTo, Automatically select mp4 
// @match https://www.converto.io/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js 
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @grant GM_addStyle 
// ==/UserScript== 
//- The @grant directive is needed to restore the proper sandbox. 

waitForKeyElements (".format-select:has(option[value=mp4])", selectFinickyDropdown); 

function selectFinickyDropdown (jNode) { 
    var evt = new Event ("click"); 
    jNode[0].dispatchEvent (evt); 

    jNode.val('mp4'); 

    evt = new Event ("change"); 
    jNode[0].dispatchEvent (evt); 
} 

还有其他的状态序列可能,为了同样的目的。

+0

作品非常完美,非常感谢,先生。现在我想让它点击下面的“CONVERT”按钮,但我从来没有学过关于ajax的任何知识,所以我只能给它一个模仿你的代码的尝试--- waitForKeyElements(“.btn lg btn-default convert-btn” ,....... {var evt = new Event(“click”); jNode [0] .dispatchEvent(evt);}它不起作用,任何想法? – user2650501

+0

Stack Overflow不是这样工作的。每个问题1个问题,在评论中,后续问题不应该“移动球门柱”。不要成为[帮助吸血鬼](http://meta.stackoverflow.com/a/258279/331508) 。[接受这个答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235);然后upvote它;然后问你的附加问题作为一个新问题,但是,要注意的是,第一个链接在答案中已经显示了如何链接控制激活,在再次询问之前阅读并试图应用该链接的答案 –

+0

好的和抱歉,再次感谢。 – user2650501

相关问题