2017-01-02 48 views
2

私はConverToのようなWebページ用のTampermonkeyコードを書いている:
自動的にドロップダウンで目のオプションを選択することになっています:ページが完全にロードされた後、数秒、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駆動コントロールは変更できません。ページが目的の状態を設定するために、キーイベントを受け取る必要があります。

  1. クリックイベント:選択ConverTo場合

    は、を期待するように見えます。

  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

これはスタックオーバーフローの仕組みではありません。 1つの質問、1つの質問、およびコメントのフォローアップの質問は、 "ゴールポストを動かすべきではありません" [ヘルプ吸血鬼](http://meta.stackoverflow.com/a/258279/331508)にならないでください。 ... [この回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235);それからupvoteし、あなたの追加の質問をしてください新しい質問として。しかし、答えの1番目のリンクはすでにコントロールアクティベーションを連鎖させる方法を示していることを警告してください。再度質問する前に、リンクされた答えを読み、適用しようとしてください。 –

+0

大変申し訳ありません。 – user2650501

関連する問題