2016-10-17 9 views
3

Ich versuche, ein .click()event auf einem React Element zu simulieren, aber ich kann nicht herausfinden, warum es nicht funktioniert (Es reagiert nicht, wenn ich die event bin Brennen).Simulieren Click-Ereignis auf reagieren Element

Ich möchte einen Facebook-Kommentar nur mit JavaScript, aber ich bin im ersten Schritt stecken (tun Sie eine .click() auf div[class="UFIInputContainer"] Element).

Mein Code ist:

document.querySelector('div[class="UFIInputContainer"]').click(); 

Und hier ist die URL, wo ich versuche, es zu tun: https://www.facebook.com/plugins/feedback.php...

P. S. Ich habe keine Erfahrung mit React und ich weiß nicht wirklich, ob das technisch möglich ist. Es ist möglich?

EDIT: Ich versuche, dies von Chrome DevTools Console zu tun.

+2

Mögliches Duplikat [Trigger ein Tastenklick aus einem Nicht-Button-Elemente] (http://stackoverflow.com/questions/6367339/trigger-a-button-click-from- a-non-button-element) – Tschallacka

+0

@Tschallacka antwort (http://stackoverflow.com/a/6367609/5997711) scheint zu funktionieren, aber leider bekomme ich kein ergebnis. –

Antwort

3

Verwenden Sie refs, um das Element in der Callback-Funktion abzurufen und einen Klick mit der Funktion click() auszulösen.

class Example extends React.Component{ 
 
    simulateClick(e) { 
 
    e.click() 
 
    } 
 
    render(){ 
 
    return <div className="UFIInputContainer" 
 
    ref={this.simulateClick} onClick={()=> console.log('clicked')}> 
 
     hello 
 
     </div> 
 
    } 
 
} 
 

 
ReactDOM.render(<Example/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="app"></div>

+0

Vielen Dank für Ihre Antwort, aber wie Sie das auf diese URL anwenden würden: [link] (https://www.facebook.com/plugins/feedback.php?api_key=516792821822250&channel_url=https%3A%2F%2Fstaticxx.facebook .com% 2Fconfig% 2Fxd_arbiter% 2Fr% 2FP5DLcu0KGJB.js% 3Fversion% 3D42% 23cb% 3Df32e78989ee3c64% 26domain% 3Dproductodelasasemana.top% 26origin% 3Dhttps% 253A% 252F% 252Fproductodelasasemana.top% 252Ff21b47c88d96f0c% 26relation% 3Dparent.parent & colorscheme = light & href = https % 3A% 2F% 2Fproductodelasesemana.top & locale = de_DE & numposts = 5 & sdk = joey & skin = hell & version = v2.8 & width = 100% 25 #)? kann es nicht funktionieren. –

0

aus früheren Lösung inspiriert und mit einiger JavaScript-Code-Injektion auch possibile zum ersten ist injizierenReagieren in der Seite und dann ein Klick-Ereignisses auf der Seite Elementen Feuer .

let injc=(src,cbk) => { let script = document.createElement('script');script.src = src;document.getElementsByTagName('head')[0].appendChild(script);script.onload=()=>cbk() } 
 
injc("https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js",() => injc("https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js",() => { 
 

 
class ReactInjected extends React.Component{ 
 
    simulateClick(e) { 
 
    e.click() 
 
    } 
 
    render(){ 
 
    return <div className="UFIInputContainer" 
 
    ref={this.simulateClick} onClick={()=> console.log('click injection')}> 
 
     hello 
 
     </div> 
 
    } 
 
} 
 
ReactDOM.render(<ReactInjected/>, document.getElementById('app')) 
 

 
}))
<div id="app"></div>

Verwandte Themen