HowTo связывают Crystal Reports с платформой объекта?

Причина в том, что эти svg элементы, очевидно, добавляются в документ асинхронно. К тому времени, когда вы смотрите на консоль и открываете структуру svgs, элементы svg уже загружены, но это не имело место в тот момент, когда ваш код запускался и создавал массив. Вы видите их из-за ленивой загрузки консоли .

Если элементы svg загружаются при загрузке страницы, то вам может повезти, и вы можете просто обернуть свой код во что-то вроде:

window.onload = () => { /* your code */ }

Но, скорее всего, этот контент загружен через некоторые Ajax-вызовы, и вышеописанное не поможет.

Вы можете прослушивать события мутации DOM:

const svgs = document.getElementsByTagName('svg');
console.log(svgs.length); // <-- presumably outputs 0

const listener = new MutationObserver(updated);
// This listens to changes under the BODY element. If you can be more 
// precise, then do so (to save resources). If you can do without
// the subtree option, then that is also preferred:
listener.observe(document.body, { childList: true, subtree: true });

function updated() {
    console.log(svgs.length); // <-- notice the increased length
    // Do whatever else you want to do with this collection.

    // If you are sure you have all you need, then stop the listener:
    listener.disconnect();
}

Если элементы заполнены все «сразу», и вы просто хотите один вызов прослушивателя событий, то вам все равно может потребоваться его настройка. с некоторым шаблоном ослабления .

6
задан 5 May 2009 в 12:11
поделиться

1 ответ

Не уверен в вашем вопросе.

Я знаю, что это вам сейчас не помогает (извините) ...

Но просто подумал, что вам может быть интересно, что одна из долгосрочных целей команд EF и Sql Reporting Services - позволить клиентам использовать Reporting Services против модели Entity Framework (или EDM).

1
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: