【问题标题】:Embed a UserVoice widget in an add-in in Excel for Windows在 Excel for Windows 的加载项中嵌入 UserVoice 小部件
【发布时间】:2016-07-21 00:32:30
【问题描述】:

(* 我清理了初始线程 *)

我想将 UserVoice 小部件添加到一个 Excel 加载项。我制作了以下示例代码:

<!DOCTYPE html>
<html>
  <head>
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/1.0/fabric.min.css">
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/1.0/fabric.components.min.css">
  </head>
  <body>
    <div id="contact_us">Contact us</div>
  </body>
  <script>
    // Include the UserVoice JavaScript SDK (only needed once on a page)
    UserVoice=window.UserVoice||[];(function(){var uv=document.createElement('script');uv.type='text/javascript';uv.async=true;uv.src='//widget.uservoice.com/KIXLyRfZDu6MdnaaVtnlSw.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(uv,s)})();

    UserVoice.push(['addTrigger', '#contact_us', {}]);
  </script>
  </body>
</html>

JSBinExcel Online 下运行良好,点击Contact us 显示消息窗口。但是在Excel 2016 for Windows下,加载几秒后(如预期),点击Contact us并没有打开这样的窗口。

不知道Home.html或者加载项的manifest文件,或者Excel for Windows的设置中是否有什么特别需要我们设置的。我也在尝试更改窗口应该弹出的位置(但仍然无法正常工作)......有人可以帮忙吗?

编辑 1 我测试了 Michael Saunders 的代码,它在 Excel Online 下工作,但在 Excel for Windows 中仍然不能工作。以下是截图。请注意,点击Contact us后,出现了三角形符号(红色)(在我的初始示例中,它具有相同的现象。如果我们只是单击任务窗格的空白区域,它也有相同的现象.)

也许该框已显示,但不在我们可以看到的任务窗格区域中?

【问题讨论】:

    标签: javascript ms-office office-js uservoice


    【解决方案1】:

    在加载速度方面,您能否动态加载 UserVoice,即使用jQuery.getScript(...)

    对于#2,你期待什么?

    【讨论】:

    • getString,请看我的更新...我没有使用url参数,是否正确(测试没问题)?
    【解决方案2】:

    这是一个完整的工作页面:

    <!DOCTYPE html>
    <html>
    <head>
        <title>UserVoice test</title>
        <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/Office.js" type="text/javascript"></script>
    </head>
    <body>
        <div id="contact_us">Contact us</div>
    </body>
    <script>
        UserVoice=window.UserVoice||[];(function(){var uv=document.createElement('script');uv.type='text/javascript';uv.async=true;uv.src='//widget.uservoice.com/KIXLyRfZDu6MdnaaVtnlSw.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(uv,s)})();
        UserVoice.push(['set', {
            width:'300px',
            post_suggestion_enabled:true
        }]);
        UserVoice.push(['identify', {}]);
        UserVoice.push(['addTrigger', '#contact_us', { mode: 'contact',menu_enabled:true, }]);
    </script>
    </html>
    

    我更改的一些内容包括:

    • #contact_us 元素更改为 div 而不是链接。
    • 删除了多余的标签
    • addTrigger 调用中添加了可选参数
    • 添加了identifyset 语句

    另外,请确保您的环境处于良好状态:

    • 清除浏览器缓存以确保在调试期间不存在旧代码:打开 Internet Explorer(不是 Edge)并选择安全 > 删除浏览历史记录 > 选择所有框 > 删除 > 关闭所有 IE 窗口和所有 Office 窗口。
    • 在线托管代码

    【讨论】:

    • 它不起作用...实际上,我意识到窗口是由于href="mailto:questions@uservoice.com"。单击Contact us 会导致发送电子邮件...那么我应该将href 的值设置为什么?我尝试了几乎所有的方法here,但它们都不能在加载项中工作......
    • 啊,更改了我的答案,因为我没有注意到您正在使用链接。这就是问题所在。
    • 我把 this code 准确地放到了我的 Home.html 中。 JSBin 有效,而此代码在加载项中无效:单击 Contact us 没有任何反应...
    • 好的,我已经编辑了我的回复以包含我的整个工作示例和所有修复
    • 您是在本地还是在 Internet 上托管代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多