2012-06-25 26 views
26

Ben Greasemonkey, javascript, aslında tüm UI şeyler için tamamen yeniyim.Greasemonkey komut dosyasını aynı sayfada, birkaç kez çalıştır?

Gereksinim: Userscript, sayfa yüklendikten sonra bir kez GS tarafından çalıştırılır. Ancak,

Yenileme olmaksızın birden çok kez çalıştırılmak için aynı betiğe ihtiyacım var Kullanım örneği: Örneğin, Amazon.com araması Ajax kullanılarak gerçekleşir. Arama sonuçlarına özel bir öğe eklemem gerekiyor.

Ben sonuçlarıyla birlikte bir arama aynı sayfada olur her zaman arama sonuçları-div benim içeriği enjekte gerekir

Benim şu anki komut sadece sayfa yenileme ile çalışır (hayır sayfa yenileme alınmamaktadır).

Umarım açıklamanın üstünde olduğunu umuyorum. Lütfen yardım et. Eğer olduğunuzu kontrol etmek gerekir, böylece etkinlik sayfası yapısında herhangi bir değişiklik tarafından tetiklenen olacağını

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

Not:

cevap

37

En basit, en sağlam yol the waitForKeyElements() utility'u kullanmaktır. Ben bunu kontrol edecek

// ==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

Teşekkür Ederiz !!!!! Bazı programlama deneyimim olsa da, bu UI komut dosyası beni rahatsız ediyor (can sıkıcı). Kodun tam olarak istediğim şekilde gerçekleştirir. Daha fazla gereksinimleri karşılamak için özelleştiririm. Tekrar çok teşekkürler. – Firefox

+0

Rica ederim; yardım etmekten memnunum! –

4

Sen geri arama, örneğin aramaya DOMNodeInserted olayını kullanabilirsiniz Doğru değişikliği hedeflemek.

+0

Çok teşekkürler: Burada

Amazon arama sonuçlarını değiştirmeye jQuery ve waitForKeyElements kullanan bir tam komut olduğunu. Arama düğmesine ilişkin 'tıklama' olayını izlemek mümkün mü? – Firefox

+1

Mutasyon olayları, kullanımda kullanılmaya elverişsiz, buggy ve basit değil. ... Tıklama olayını takip edebilirsiniz, ancak gerçek sayfa değişiklikleri bundan sonra bazı rasgele aralıklarla (birkaç saniyeye kadar) gerçekleşir. –

+0

Kullanımdan kaldırıldığını bilmiyordum, teşekkürler. – ncreep

İlgili konular