javascript
  • html
  • jquery-selectors
  • 2017-06-15 5 views 0 likes 
    0

    一部のボタンが表示されると自動的にクリックするChromeブラウザ拡張機能を作成しています。私は、閲覧するためにarrive.jsを使用しています。これは、クエリセレクタを使用して、クリックするhtml要素を監視します。サイトにボタンBがない場合にのみボタンAを選択するクエリセレクタ

    var buttonA = 'a[data-test="begin-session-button"]' 
    var buttonB = 'a[data-test="skill-header-practice-button"]' 
    
    document.arrive(buttonA, function() { 
        document.querySelector(buttonA).click(); 
    }); 
    
    document.arrive(buttonB, function() { 
        document.querySelector(buttonB).click(); 
    }); 
    

    私が持っている問題は、いくつかのサイトが両方のボタンbuttonAbuttonBを持っています。現在のところ、両方のボタンがクリックされ、最後にクリックされるのは運の問題です。

    buttonAbuttonBのサイトがある場合は、必ずbuttonAをクリックしてください。

    document.querySelector(
        'a[data-test="skill-header-practice-button] ' + 
        ':not:a[data-test="begin-session-button"]' 
    ) 
    

    これは悪い構文で、クロームで動作していない:これは次のようになりクロームブラウザコンソールでクエリとして

    document.arrive(buttonB + ' :not:' + buttonA, function() { 
        document.querySelector(buttonB).click(); 
    }); 
    

    :だから私は次のようにbuttonBのクエリを変更するために探していますブラウザーコンソール。正しい構文はどのように見えますか?

    答えて

    1

    あなたは私が、私は

    1

    完全に間違っている可能性がけれども私は、これはそれを行うには簡単です推測する前に、私が到着したライブラリを使用していると言うことはできません。この

    document.arrive(buttonA, function() { 
        document.querySelector(buttonA).click(); 
    }); 
    
    document.arrive(buttonB, function() { 
        if(document.querySelector(buttonA) == null){ 
        document.querySelector(buttonB).click(); 
        } 
    }); 
    

    ような何かを行うことができませんでした複雑なセレクタよりも「プログラマチック」になります(buttonAがグローバルなので、コードで動作します)。

    var buttonA = 'a[data-test="begin-session-button"]' 
    var buttonB = 'a[data-test="skill-header-practice-button"]' 
    
    document.arrive(buttonA, function() { 
        document.querySelector(buttonA).click(); 
    }); 
    
    document.arrive(buttonB, function() { 
        var buttA = document.querySelector(buttonA); 
        if(buttA === null){ 
        document.querySelector(buttonB).click(); 
        } 
    }); 
    
    関連する問題