Как узнать на странице HTML, когда внешне загруженный объект javascript определен и готов к вызову методов для него?
Особенности проблемы:
Я использую веб-приложение обратной связи uservoice , включая их виджет JavaScript и их параметр SSO ( Single-SignOn ).
Все отлично работает. Слева от окна находится вкладка «Обратная связь». И я могу использовать следующий якорь для дополнительных ссылок, чтобы открыть их всплывающий виджет обратной связи:
<a href="#" onclick="UserVoice.Popin.show(uservoiceOptions); return false;">feedback</a>
Но ... у меня возникают проблемы при попытке поддержки дополнительного рабочего процесса - на одной конкретной странице (например, на странице обратной связи) я хочу, чтобы форма обратной связи с пользовательским голосом автоматически всплывала, когда пользователь переходит на страницу без инициации через событие клика.
Я попытался поместить следующее внизу страницы:
<script type="text/javascript">
function _autoPopupUserVoice() {
UserVoice.Popin.show(uservoiceOptions);
}
_loadSuper = window.onload;
window.onload = (typeof window.onload != 'function') ? _autoPopupUserVoice : function() { _loadSuper(); _autoPopupUserVoice(); };
</script>
Но Firebug показывает ошибку " UserVoice не определено ". Таким образом, я думаю, что пользовательский код JavaScript не был выполнен к моменту вызова _autoPopupUserVoice()
.
Я пробовал несколько других вещей, но не смог заставить его работать. Как узнать, когда объект Uservoice
javascript загружен и готов к вызову методов для него?
Для справки, объект Uservoice загружается через следующий JavaScript в конце страницы:
<script type="text/javascript">
function _loadUserVoice() {
var s = document.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('src', ("https:" == document.location.protocol ? "https://" : "http://") + "cdn.uservoice.com/javascripts/widgets/tab.js");
document.getElementsByTagName('head')[0].appendChild(s);
}
_loadSuper = window.onload;
window.onload = (typeof window.onload != 'function') ? _loadUserVoice : function() { _loadSuper(); _loadUserVoice(); };