2017-03-01 7 views
6

は、私が試した:PhantomJS経由でMouseDownをトリガーする方法は?

var clickEvent = document.createEvent('MouseEvents'); 
clickEvent.initEvent("mousedown", true, true); 
jQuery('.left-rail-facets .facet-list .facet.CS .suggestion[data-value="B"] a')[0].dispatchEvent(clickEvent); 

それだけでサイト上でアクションをトリガーするために失敗しました。 エラーは返されません。

+0

、あなたのコードのより広範なサンプル(あなたがいない正しい場所にこのサンプルを使用することができる)方法を示してください。また、このコードを実行する時点で要素が存在することは絶対に肯定的ですか?スクリーンショットでコードをチェックインしましたか?また、質問に使用するPhantomJSのバージョンと環境を記述すると便利です。 – Vaviloff

答えて

1

あなたはdocument.createEventとevent.initMouseEventを使用する必要があります:

var element = document.querySelector('.left-rail-facets .facet-list .facet.CS .suggestion[data-value="B"] a'); 
//or var element = jQuery('.left-rail-facets .facet-list .facet.CS .suggestion[data-value="B"] a')[0]; 
var elementRect = element.getBoundingClientRect(); 
var mouseEvent = document.createEvent('MouseEvents'); 
mouseEvent.initMouseEvent('mousedown', true, true, window, 0, elementRect.left, elementRect.top); 
4

これは、あなたがプログラムで「マウスダウン」イベントでDOM要素をクリックを誘発する方法です。あなたの質問に答えるために、あなたはあなたのソースコードに二つのものを持っている必要があります:

イベントリスナーをクリックを検出する

とあなたのjQueryのラインであなたの複数のセレクタ間

カンマ。

以下のスニペットを実行してください。これは、修正されたjQueryラインとリスナーが正しく動作していることを示しています。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script> 
 
    $(document).ready(function() { 
 
     // You must have event listeners to see if anything is actually happening. For example, here I will add only a listener to the first element: 
 
     jQuery(".left-rail-facets")[0].addEventListener('mousedown', function(e) { 
 
     jQuery(".left-rail-facets")[0].innerHTML = "I have received a click."; 
 
     }, false); 
 
     // Now here is the code from your question. Please see how I have commas instead of spaces in my jQuery selector: 
 
     var clickEvent = document.createEvent('MouseEvents'); 
 
    clickEvent.initEvent('mousedown', true, true); 
 
     jQuery('.left-rail-facets,.facet-list,.facet.CS,.suggestion[data-value="B"],a')[0].dispatchEvent(clickEvent); 
 
    }); 
 
    </script> 
 
</head> 
 

 
<body> 
 

 
    <h1>I am a Webpage</h1> 
 

 
    <p class="left-rail-facets">I have not received a click.</p> 
 
    <p class="facet-list">I have not received a click.</p> 
 
    <facet class="CS">I have not received a click.</facet> 
 
    <p class="suggestion" data-value="B">I have not received a click.</p> 
 
    <a href="url">I have not received a click.</a> 
 

 
</body> 
 

 
</html>

関連する問題