2016-10-28 5 views
0

私は、プログラムで反応するJS要素をクリックしようとしています。例えばJavaScriptを使用してプログラムで.click()がReactJS要素でトリガーされない

このリンクをチェックしてください:Click Here

私は主な製品の画像を変更します見本画像にクリックすることができませんでしだ。

私はこの下のコードで試してみました:両方が動作していない

document.querySelector('#product-selection-4476800 > section.np-sku-filters > div.np-circular-swatches.small > ul > li:nth-child(2) > a').click(); 

document.querySelector('#product-selection-4476800 > section.np-sku-filters > div.np-circular-swatches.small > ul > li:nth-child(2) > a > span > img').click(); 

。私も試しました

function clickElement(el){ 
    var ev = document.createEvent("MouseEvent"); 
    ev.initMouseEvent(
     "click", 
     window, null, 
     false, false, false, false, 
     0, null 
    ); 
    el.dispatchEvent(ev); 
} 

まだ要素が変更されていません。

ありがとうございます!

+0

参考までに、例えば、あなたのウェブサイトではなく、フィドルやコードスニペットを意味します。 – Rajesh

+0

@Rajeshそれは申し訳ありません。私はクロム拡張を作成しています。どの要素をクリックするかは、ユーザーの意見に依存します。要素をクリックすると私を助けてください。そして私はReactJSを知らないので、私はフィドルを作ることができません。ありがとう。 – Subhajit

+0

また、フレームワークやライブラリを使用している場合は、最大限に試してみることをお勧めします。そうすれば、コードは一貫しています。そのため、アイテムを取得してクリックをトリガーするのではなく、ハンドラを呼び出すようにしてください。そうでない場合は、[React child elementからDOMノードを取得する]というリンクを試してください(http://stackoverflow.com/questions/29568721/getting-dom-node-from-react-child-element) – Rajesh

答えて

0

DOMの外側からReactJS要素をクリックするという解決策が見つかりました。

var elm = document.querySelector('#product-selection-4476800 > section.np-sku-filters > div.np-circular-swatches.small > ul > li:nth-child(2) > a'); 

function triggerEvents(n, e){ 
    var ev = document.createEvent('MouseEvents'); 
    ev.initEvent(e, true, true); 
    n.dispatchEvent(ev); 
} 

triggerEvents(elm, "mouseover"); 
triggerEvents(elm, "mousedown"); 
triggerEvents(elm, "click"); 
triggerEvents(elm, 'mouseup'); 

期待どおりに動作します。

お時間をいただきありがとうございます。 :)

関連する問題