टीएल; डीआर: मैन्युअल जावास्क्रिप्ट को आग लगाने का प्रयास करना ट्विच के चैट बटन पर ईवेंट पर क्लिक करें, संदेश नहीं भेजेगा। समझ में नहीं आता कि घटना सामान्य क्लिक के समान क्यों नहीं करती है और यह नहीं जानता कि इसे कैसे काम करना है।ember.js में किसी बटन पर मैन्युअल क्लिक ईवेंट को फायर करने से आवश्यक परिणाम नहीं मिलता है
तो मैं twitch.tv के लिए कस्टम बॉट बनाने की कोशिश कर रहा हूं, केवल HTML से अपनी जानकारी पढ़ रहा हूं। मुझे यह पूरी तरह से उस बिंदु तक काम कर रहा है जहां यह आदेशों को पहचान सकता है और टेक्स्टबॉक्स में टेक्स्ट डाल सकता है। अब मेरी समस्या यह है कि, जैसे ही मैं "चैट" बटन पर मैन्युअल क्लिक ईवेंट को आग लगाने की कोशिश करता हूं, यह काम नहीं करता है। मेरा अनुमान है कि यह ember.js के साथ कुछ करने के लिए है, और मैं स्पष्ट रूप से इसके बारे में कुछ भी नहीं जानता। वैसे भी, यहां कोड का हिस्सा है जो काम नहीं करता है। संपादित करें: यह काम करता है अगर मैं इसे कंसोल में एकल के रूप में दर्ज करता हूं, हालांकि मेरे शेष कोड के संदर्भ में काम नहीं करता है।
<button class="button primary float-right send-chat-button" data-bindattr-3945="3945">
<span>
Chat
</span>
</button>
जब मैं मैन्युअल रूप से इस पर एक क्लिक के ईवेंट को सक्रिय करने का प्रयास करें, कुछ नहीं होता:
$('.send-chat-button').click();
यहाँ क्या होता है कि मैं एचटीएमएल का एक टुकड़ा चैट बटन सबमिट करें कि प्राप्त है, जो इस है । हालांकि, जब मैं बटनकंटन.चल्डरेन [0] और बटनकंटन.चिल्डेरेन 1 (जो क्रमशः, दर्शक बटन की सेटिंग्स और सूची) पर मैन्युअल क्लिक ईवेंट को आग लगाता है, तो यह काम करता है। वे इस तरह दिखेगा:
<a data-ember-action="3943" class="button glyph-only float-left" title="Chat Settings"></a>
मैं अंतर अनुमान लगा रहा हूँ डेटा-एंबर कार्रवाई और डेटा bindattr- * में है, लेकिन मैं यह काम करने के लिए कैसे पता नहीं है। यहां कोई भी जानता है कि क्लिक() ईवेंट क्यों काम नहीं करता है और सीधे क्लिक करता है?
संपादित करें: यदि आपके प्रश्न के बारे में आपके कोई प्रश्न हैं, तो बेझिझक पूछें।
EDIT2: मैंने थोड़ा और प्रयोग किया, और मैं बटन से सभी HTML विशेषताओं को हटा सकता हूं, और उस पर क्लिक करने से अभी भी काम करेगा। मुझे नहीं पता कि क्या :(चल रहा है EDIT3 है
:। ठीक है, तो यह है कि यह केवल कार्य करना बंद कर जब मैं बटन फिर भी पता नहीं क्या हो रहा है के भीतर स्पैन को दूर लगता है (हाँ, यह भी कोशिश की है। अवधि पर क्लिक ईवेंट को आग लगाने के लिए)
EDIT4: जैसा कि अनुरोध किया गया है, यहां मेरी तरफ से सभी कोड हैं। ध्यान दें कि मैं खुद को टच से बटन पर क्लिक करने की कोशिश कर रहा हूं, जिसमें से एम्बर साइड मेरे पास नहीं है कोड। इस कोड का उपयोग कंसोल में एक twitch.tv स्ट्रीम पर चिपकाकर और फिर इसे शुरू करने के लिए शुरू करने के द्वारा शुरू किया जाता है। मैसेज प्रोसेसिंग। मुझे बहुत सारे हार्डकोडेड मानों के लिए खेद है, वे जुड़वां फ़ील्ड हैं जिन्हें मुझे चाहिए। अभी के लिए मैं ' मैं बस अवधारणा का प्रमाण ढूंढ रहा हूं।
var frequency = 5000;
var myInterval = 0;
var lastMessageId = 0;
function initiateMessageProcessing() {
if (myInterval > 0) {
clearInterval(myInterval);
}
myInterval = setInterval("checkMessages()", frequency);
}
function checkMessages() {
var chat = document.getElementsByClassName("chat-lines")[0];
processMessages(extractUnprocessedMessages(chat.children));
lastMessageId = parseInt(chat.lastElementChild.getAttribute("id").substring(5, 10));
}
function extractUnprocessedMessages(chat) {
var unprocessedMessages = [];
var chatId = 0;
for (i = 0; i < chat.length; i++) {
chatId = parseInt(chat[i].getAttribute("id").substring(5, 10));
if (chatId > lastMessageId) {
unprocessedMessages.push(chat[i]);
}
}
return unprocessedMessages;
}
function processMessages(unprocessedMessages) {
var messageElement;
for (i = 0; i < unprocessedMessages.length; i++) {
messageElement = unprocessedMessages[i].children[0].getElementsByClassName("message")[0];
if (messageElement != undefined && messageElement != null) {
if (messageElement.innerHTML.search("!test") !== -1) {
sendMessage('Hello world!');
}
}
}
}
function sendMessage(message) {
fillTextArea(message);
var button = $('.send-chat-button').get(0);
var event = new MouseEvent('click', {
bubbles : true
});
button.dispatchEvent(event);
}
function fillTextArea(message){
var textArea;
var chatInterface = document.getElementsByClassName("chat-interface")[0];
var textAreaContain = chatInterface.children[0];
textArea = textAreaContain.children[0].children[0];
textArea.value = message;
}
EDIT5: Eventlistener स्क्रीनशॉट:
EDIT6: संपादित स्रोत कोड $ उपयोग करने के लिए क्लिक करें(); ('send-चैट बटन।')। मैंने यह कोशिश की है, वर्तमान कोड में काम नहीं करता है, अगर चैट में टेक्स्ट होने पर मैं मैन्युअल रूप से कंसोल में इस एकल कमांड को फायर करता हूं तो यह काम करता है। लेकिन दुख की बात है कि मेरे कोड में काम नहीं करता है।
EDIT7: एम्बर.रुन का उपयोग किया गया, अभी भी काम नहीं करता है।
EDIT8: इस्तेमाल किया dispatchmouseevent, अभी भी कोड
कृपया अधिक कोड प्रदान करें। –
एक नज़र डालने के लिए धन्यवाद, मैंने पोस्ट में अपना पूरा कोड जोड़ा! – Gerdinand
क्रोम पर, यदि आप तत्व टैब पर जाते हैं और उसके बाद शैलियों टैब के ठीक आगे होते हैं, तो घटनाओं के लिस्टर्न में देखने का विकल्प होता है, कोई भी गर्व नहीं होता है, यह सब कुछ होगा क्योंकि यह निर्भर करता है कि उस क्लिक के लिए टच कैसे सुन रहा है लेकिन यह आपको – Daemedeor