在 HTML 页面中,我如何知道何时定义了外部加载的 Javascript 对象并准备好在其上调用方法?
问题细节:
我正在使用用户语音反馈 Web 应用程序,包括他们的 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 显示错误:
“未定义用户语音”。
所以我猜用户语音 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(); };