Какой реальный мир приложения WPF там? [закрытый]

Короткие и простые: поскольку элементы, которые вы ищете, не существуют в документе (пока).


В оставшуюся часть этого ответа я буду использовать getElementById как пример, но то же самое относится к getElementsByTagName , querySelector и любому другому методу DOM, который выбирает элементы.

Возможные причины

Есть две причины, по которым элемент может не существовать:

  1. Элемент с переданным идентификатором действительно не существует в документе. Вы должны дважды проверить, что идентификатор, который вы передаете на getElementById, действительно соответствует идентификатору существующего элемента в (сгенерированном) HTML и что у вас не было с ошибкой идентификатор (идентификаторы чувствительный !). Кстати, в большинстве современных браузеров , которые реализуют методы querySelector() и querySelectorAll(), нотация стиля CSS используется для извлечения элемента его id, например: document.querySelector('#elementID'), в отличие от способа, с помощью которого элемент извлекается его id в [[16]; в первом символе # необходимо, во втором это приведет к тому, что элемент не будет извлечен.
  2. Элемент не существует в данный момент , который вы вызываете getElementById ].

Последний случай довольно распространен. Браузеры анализируют и обрабатывают HTML сверху вниз. Это означает, что любой вызов элемента DOM, который встречается до появления этого элемента DOM в HTML, не будет выполнен.

Рассмотрим следующий пример:



Появляется div после script. В настоящий момент сценарий выполняется, элемент не существует , но и getElementById вернут null.

jQuery

То же самое относится к все селекторы с jQuery. jQuery не найдет элементов, если вы ошибочно написали ваш селектор, или вы пытаетесь выбрать их , прежде чем они на самом деле существуют .

Добавленный поворот - это когда jQuery не найден потому, что вы загрузили скрипт без протокола и запускаетесь из файловой системы:


этот синтаксис используется, чтобы позволить сценарию загружаться через HTTPS на странице с протоколом https: // и для загрузки HTTP-версии на странице с протоколом http: //

У этого есть неудачный побочный эффект попытки и невозможность загрузить file://somecdn.somewhere.com...


Решения

Прежде чем позвонить getElementById (или любой метод DOM, если на то пошло), убедитесь, что элементы, к которым вы хотите получить доступ, существуют, т. е. загружается DOM.

Это может быть обеспечено просто добавив ваш JavaScript после к соответствующему элементу DOM

, и в этом случае вы также можете поместить код непосредственно перед тегом закрывающего тела () (все DOM элементы будут доступны в момент выполнения скрипта). [/ g3 6]

Другие решения включают прослушивание событий load [MDN] или DOMContentLoaded [MDN] . В этих случаях не имеет значения, где в документе вы помещаете код JavaScript, вам просто нужно запомнить, чтобы весь обработчик DOM обрабатывался в обработчиках событий.

Пример:

window.onload = function() {
    // process DOM elements here
};

// or

// does not work IE 8 and below
document.addEventListener('DOMContentLoaded', function() {
    // process DOM elements here
});

Более подробную информацию об обработке событий и различиях браузера см. в статьях на странице quirksmode.org .

jQuery

Сначала убедитесь, что jQuery загружен правильно , Используйте инструменты разработчика браузера , чтобы узнать, был ли найден файл jQuery и исправлен ли URL-адрес, если он не был (например, добавьте схему http: или https: в начале, отрегулируйте путь, и т. д.)

Прослушивание событий load / DOMContentLoaded - это именно то, что делает jQuery с .ready() [docs] . Весь ваш код jQuery, который влияет на элемент DOM, должен находиться внутри этого обработчика событий.

На самом деле в учебнике j8uery явно указано:

Как почти все, что мы делаем при использовании jQuery, читает или манипулирует объектной моделью документа (DOM), мы должны убедиться, что мы начинаем добавлять события и т. д., как только DOM готов.

Для этого мы регистрируем готовое событие для документа.

$(document).ready(function() {
   // do stuff when DOM is ready
});
blockquote>

В качестве альтернативы вы также можете использовать сокращенный синтаксис:

$(function() {
    // do stuff when DOM is ready
});

Оба эквивалентны.

82
задан 9 revs, 6 users 57% 3 July 2013 в 03:57
поделиться

22 ответа

Бета MSN 9.0 находится в WPF

1
ответ дан masfenix 24 November 2019 в 09:16
поделиться

В то время как это не основное приложение, наше новое приложение управления движения записано с WPF. Приложение используется для управления моторизованным пейзажем по сетевым соединениям, это используется в живом театре для перемещения проигрывателей, занавесок, и т.д. Приложение называют SpikeMark.

1
ответ дан gbc 24 November 2019 в 09:16
поделиться

Парни в thirteen23 сделал красивый клиент Твиттера позвонившим blu, который привлекает большое внимание в эти дни.

7
ответ дан Enrico Campidoglio 24 November 2019 в 09:16
поделиться

Вот яркий пример приложения WPF, которое действительно имеет смысл в деловом мире: Billy Hollis на Получении Умного с Billy Hollis WPF

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

4
ответ дан urini 24 November 2019 в 09:16
поделиться

Сначала один я могу думать, , BabySmash
Yahoo Messenger - другой

3
ответ дан lomaxx 24 November 2019 в 09:16
поделиться

Проверьте этот список на Википедию: http://en.wikipedia.org/wiki/Windows_Presentation_Foundation#WPF_Applications

Так, не действительно все так очень.

3
ответ дан Adam Haile 24 November 2019 в 09:16
поделиться

Остроумный настольный клиент Twitter: http://code.google.com/p/wittytwitter/

3
ответ дан SitWalkStand 24 November 2019 в 09:16
поделиться

Мне всегда нравилось Семейный сериал от Головокружения

2
ответ дан Arcturus 24 November 2019 в 09:16
поделиться

Спасибо за то, чтобы указывать Остроумный и family.show. Я работал над обоими из тех приложений.

В настоящее время нет многих реального приложения, работающего на WPF. Я думаю, что больше приложений начнет появляться в следующем году как больше разработчиков, и разработчики входят в курс дела на WPF develeopment и дизайне.

Тем временем, можно проверить Набор приложений на Channel9 и Большой Список приложений

Tim Sneath WPF
2
ответ дан Alan Le 24 November 2019 в 09:16
поделиться

Я продаю приложение WPF, http://www.nbdtech.com/yaTimer

2
ответ дан Nir 24 November 2019 в 09:16
поделиться
43
ответ дан 24 November 2019 в 09:16
поделиться

www.clearoffice.com
Клон Excel, полностью написанный в WPF.

6
ответ дан 24 November 2019 в 09:16
поделиться

Glo встроен в WPF http://www.globible.com

3
ответ дан 24 November 2019 в 09:16
поделиться

Версия Nomadesk для Windows ( www.nomadesk.com ) использует WPF Это онлайн-сервис для резервного копирования, обмена и синхронизации данных

1
ответ дан 24 November 2019 в 09:16
поделиться

Ознакомьтесь с MailWasher Pro 2010 по адресу http://www.firetrust.com/en/products/mail cabin-pro , который использует WPF для пользовательского интерфейса и C ++ для внутреннего интерфейса

1
ответ дан 24 November 2019 в 09:16
поделиться

Начиная с версии 3.5, клиент Evernote для Windows стал WPF... к огорчению многих клиентов.

0
ответ дан 24 November 2019 в 09:16
поделиться

Версия Bria для Windows из Counterpath для Windows создана с использованием WPF.

2
ответ дан 24 November 2019 в 09:16
поделиться

Ознакомьтесь с PhotoSuru с исходным кодом здесь http://windowsclient.net/appfeeds/SubscriptionCenter/Gallery/photosuru.aspx

1
ответ дан 24 November 2019 в 09:16
поделиться

Отличный NHibernate Profiler (который также имеет версии для EF и Linq-to-SQL).

1
ответ дан 24 November 2019 в 09:16
поделиться

Взгляните и на список приложений wpf здесь -

Классные приложения WPF:

http://blogs.msdn.com/b/chabrook/archive/2007/ 02/20 / cool-wpf-applications.aspx

1
ответ дан 24 November 2019 в 09:16
поделиться

Zune Desktop Player, а также множество стандартных приложений Windows 7 созданы с использованием WPF.

2
ответ дан 24 November 2019 в 09:16
поделиться

Не все же, но я слышал, что следующая версия Живой Messenger, вероятно, будет WPF. Это может быть достойное внимания сразу сделано. Microsoft определенно должна добраться, больше их собственных приложений, обновленных до WPF к действительно ", продает ее".

0
ответ дан Fish Below the Ice 24 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

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