HTML ページで、外部からロードされた Javascript オブジェクトが定義され、メソッドを呼び出す準備が整ったことをどのように知ることができますか?
問題の詳細:
Javascript ウィジェットと SSO ( Single-SignOn ) オプションを含むuservoiceフィードバック Web アプリケーションを使用しています。
すべて正常に動作します。ウィンドウの左側に目立つ [フィードバック] タブがあります。また、追加のリンクに次のアンカーを使用して、ポップアップ フィードバック ウィジェットを開くことができます。
<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が定義されていません".
したがって、呼び出されるまでに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(); };