2017-03-01 55 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>

相關問題