4 Stimmen

Uservoice Javascript Widget - Wie man ein Feedback-Formular automatisch beim Laden der Seite öffnet

Wie kann ich in einer HTML-Seite wissen, wann ein extern geladenes Javascript-Objekt definiert und bereit ist, dass Methoden darauf aufgerufen werden?

Besonderheiten des Problems:

Ich benutze die Benutzerstimme Feedback-Webanwendung einschließlich ihres Javascript-Widgets und ihres SSO ( Single-SignOn ) Option.

Alles funktioniert einwandfrei. Es gibt eine auffällige Registerkarte "Feedback" auf der linken Seite des Fensters. Und ich kann den folgenden Anker für zusätzliche Links verwenden, um ihr Popup-Feedback-Widget zu öffnen:

<a href="#" onclick="UserVoice.Popin.show(uservoiceOptions); return false;">feedback</a>

Aber... Ich habe Probleme beim Versuch, einen zusätzlichen Workflow zu unterstützen - auf einer bestimmten Seite (z.B. der Feedback-Seite) möchte ich, dass das uservoice-Feedback-Formular automatisch aufpoppt, wenn der Benutzer auf die Seite geht, ohne über ein Klick-Ereignis initiiert zu werden.

Ich habe versucht, das Folgende unten auf der Seite einzufügen:

<script type="text/javascript">
function _autoPopupUserVoice() {
  UserVoice.Popin.show(uservoiceOptions);
}
_loadSuper = window.onload;
window.onload = (typeof window.onload != 'function') ? _autoPopupUserVoice : function() { _loadSuper(); _autoPopupUserVoice(); };
</script>

Aber Firebug zeigt einen Fehler an:

" BenutzerStimme ist nicht definiert ".

Ich vermute also, dass das Uservoice-Javascript noch nicht ausgeführt worden ist, wenn _autoPopupUserVoice() genannt wird.

Ich habe noch ein paar andere Dinge ausprobiert, aber es ist mir nicht gelungen, es zum Laufen zu bringen. Wie kann man wissen, wann die Uservoice Javascript-Objekt ist geladen und bereit für den Aufruf von Methoden auf ihm?

Als Referenz wird das Uservoice-Objekt über das folgende Javascript am Ende der Seite geladen:

<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(); };

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X