gpt4 book ai didi

javascript - Uservoice Javascript 小部件 - 如何在页面加载时自动弹出反馈表单

转载 作者:行者123 更新时间:2023-12-01 13:07:41 31 4
gpt4 key购买 nike

在 HTML 页面中,我如何知道何时定义了外部加载的 Javascript 对象并准备好在其上调用方法?
问题具体:
我正在使用 uservoice反馈 Web 应用程序,包括他们的 Javascript 小部件和他们的 SSO(单点登录)选项。
一切正常。窗口左侧有一个突出的反馈选项卡。我可以使用以下 anchor 获取其他链接以打开其弹出式反馈小部件:

<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 is not defined".


所以我猜到时间 _autoPopupUserVoice() 还没有执行 uservoice Javascript叫做。
我已经尝试了一些其他的东西,但还没有设法让它工作。怎么知道什么时候 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(); };

最佳答案

我想出了以下 javascript,我把它放在页面底部的 Uservoice 小部件代码下。它每 100 毫秒循环一次并测试是否定义了 Uservoice 对象。一旦它被定义,它就会调用 Popin弹出小部件的方法:

<script type="text/javascript">

// Show the Uservoice feedback widget
function _autoPopupUserVoice() {
UserVoice.Popin.show(uservoiceOptions);
}

// Wait for the uservoice JS object to load, fire _autoPopupUserVoice when it is finished.
if ((typeof window['UserVoice'] == 'undefined')) {

var timer = setInterval(function () {
ok = false;
try { ok = (typeof window['UserVoice'] != 'undefined');} catch (e) {}

if (ok) {
clearInterval(timer);
_autoPopupUserVoice();
}
}, 100);
}
</script>

我相信有更好的方法来做到这一点。也许甚至有一个我不知道的回调函数?

更新(8/Dec/09):
这个方法是 - 由 Uservoice 批准:

Thanks for contacting UserVoice support. That method looks perfectly reasonable. We don't have any in built methods for doing this (currently, we are looking at this type of functionality) but the code described even though quite hacky, should do the trick.

关于javascript - Uservoice Javascript 小部件 - 如何在页面加载时自动弹出反馈表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1860501/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com