2012-06-25 6 views
26

मैं वास्तव में Greasemonkey, जावास्क्रिप्ट, वास्तव में सभी यूआई सामान के लिए नया हूँ।एक ही पृष्ठ पर कई बार Greasemonkey स्क्रिप्ट चलाएं, कई बार?

आवश्यकता: पेज लोड होने के बाद उपयोगकर्तास्क्रिप्ट जीएस द्वारा चलाया जाता है। हालांकि, मुझे रीफ्रेश किए बिना

केस का उपयोग करें: पूर्व के लिए, Amazon.com खोज अजाक्स का उपयोग करके होती है। मुझे खोज परिणामों में एक कस्टम तत्व एम्बेड करने की आवश्यकता है।

मैं परिणामों के साथ हर बार एक खोज एक ही पृष्ठ में होता है खोज-परिणाम-div मेरी सामग्री को इंजेक्षन करने की जरूरत है

मेरे वर्तमान स्क्रिप्ट केवल पृष्ठ ताज़ा के साथ चलता है (वहाँ कोई पृष्ठ ताज़ा है)।

मुझे उम्मीद है कि स्पष्टीकरण स्पष्ट है। कृपया मदद करे।

उत्तर

37

सबसे आसान, सबसे मजबूत तरीका the waitForKeyElements() utility का उपयोग करना है। , मैं इसे बाहर की जाँच करेगा

// ==UserScript== 
// @name  _Amazon Search, alter results 
// @include http://www.amazon.com/s/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a design change 
    introduced in GM 1.0. It restores the sandbox. 
*/ 

function addCustomSearchResult (jNode) { 
    //***** YOUR CODE HERE ***** 
    jNode.prepend (
     '<div id="result_000" class="fstRow">Buy my stuff, instead!</div>' 
    ); 
} 

waitForKeyElements ("#atfResults", addCustomSearchResult); 
+2

धन्यवाद बहुत बहुत !!!!! हालांकि मेरे पास कुछ प्रोग्रामिंग अनुभव है, लेकिन यह यूआई स्क्रिप्टिंग मुझे परेशान (परेशान) है। आपका कोड वैसे ही करता है जिस तरह से मैं चाहता था। मैं इसे और आवश्यकताओं को पूरा करने के लिए इसे अनुकूलित कर दूंगा। बहुत बहुत धन्यवाद। – Firefox

+0

आपका स्वागत है; मदद करने में खुशी! –

4

आप अपने कॉलबैक, जैसे कॉल करने के लिए DOMNodeInserted घटना का उपयोग कर सकते हैं:

document.addEventListener('DOMNodeInserted', function() { alert('hi') }, false); 

ध्यान दें कि घटना पेज संरचना में कोई बदलाव से शुरू हो रहा हो जाएगा, तो आप जांच करने के लिए है कि आप कर रहे हैं होगा सही परिवर्तन को लक्षित करना।

+0

धन्यवाद एक बहुत:

यहाँ एक पूरा स्क्रिप्ट jQuery और waitForKeyElements का उपयोग करता है अमेज़न खोज परिणामों को बदलने के लिए है। खोज बटन से संबंधित 'क्लिक' ईवेंट को ट्रैक करना संभव है? – Firefox

+1

उत्परिवर्तन घटनाओं को अभ्यास में उपयोग करने के लिए बहिष्कृत, छोटी गाड़ी, और सीधा नहीं है। ... आप क्लिक ईवेंट को ट्रैक कर सकते हैं, लेकिन इसके बाद वास्तविक पृष्ठ परिवर्तन कुछ यादृच्छिक अंतराल (कई सेकंड तक) होंगे। –

+0

नहीं पता था कि इसे बहिष्कृत किया गया था, धन्यवाद। – ncreep