Мне нужно получить уведомление, когда элемент с классом «nav» создается при загрузке документа. Googling Я нашел MutationObservers и думал, что они будут идеальными, но я не могу заставить его работать.Посмотрите на создание элемента в сценарии greasemonkey?
// ==UserScript==
// @name ii-shortcuts
// @namespace https://github.com/RedHatter
// @include *
// @version 1
// @run-at document-start
// ==/UserScript==
var observer = new MutationObserver(function(mutations)
{
mutations.forEach(function(mutation)
{
if (mutation.target.getAttribute('class') == 'nav')
GM_log('nav creation');
});
});
observer.observe(document, {subtree: true, attributes: true, attributeFilter: ['class']});
Я также пробовал.
// ==UserScript==
// @name ii-shortcuts
// @namespace https://github.com/RedHatter
// @include *
// @version 1
// @run-at document-start
// ==/UserScript==
var observer = new MutationObserver(function(mutations)
{
mutations.forEach(function(mutation)
{
if (mutation.addedNodes[0].getAttribute('class') == 'nav')
GM_log('nav creation');
});
});
observer.observe(document, {subtree: true, childList: true});
Но в последнем случае было создано «навигация» на странице загрузки. Что мне не хватает?
@CrazyTrain Не accouding к [спецификации] (http://www.w3.org/html/wg/drafts /html/master/syntax.html#syntax) «События мутации DOM не должны запускаться для изменений, вызванных анализом UA документа ... Однако наблюдатели за мутациями срабатывают, как того требует спецификация DOM». – RedHatter
вы можете использовать [arrival.js] (https://github.com/uzairfarooq/arrive), он обеспечивает приятный простой api для прослушивания создания элементов (использует MutationObserver внутри) –
Хм ... выглядят очень красиво. Спасибо @UzairFarooq – RedHatter