【发布时间】:2022-07-22 02:10:59
【问题描述】:
我正在使用 Office-JS 库开发 Excel 加载项。 部分页面加载时,JS加载不正确。
Javascript 仅在重新加载页面后才能工作。
I disabled turbolink as suggested in another question. 但是我的问题还是出现了。
我的 office_connect.js 包含以下内容:
//= require jquery3
//= require jquery_ujs
//= require_self
//= require select2-full
//= require select2_locale_de
还有我的布局文件的头部:
<%= yield :head_top %>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<%= stylesheet_link_tag "office_connect"%>
<%= javascript_include_tag "office_connect_app"%>
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>
<%= javascript_include_tag "oc_function"%>
<%= javascript_include_tag "office_excel"%>
<title><%=t('layouts.head.text_immodatacockpit')%></title>
<%= csrf_meta_tag %>
<%= yield :head %>
oc_function 文件启动 Office JS:
// The initialize function must be run each time a new page is loaded.
(function () {
Office.initialize = function (reason) {
// If you need to initialize something you can do so here.
};
})();
我的 excel.js 的缩短版本:
(function () {
"use strict";
var cellToHighlight;
var messageBanner;
var config;
var sheetData;
let housing_output_template_new;
let housing_output_template_edit;
// The initialize function must be run each time a new page is loaded.
Office.initialize = function (reason) {
$(document).ready(function () {
$(".spinner").hide();
// If not using Excel 2016, use fallback logic.
if (!Office.context.requirements.isSetSupported('ExcelApi', '1.1')) {
$('#subtitle').text("Opps!");
$("#template-description").text("Sorry, this sample requires Word 2016 or later. The button will not open a dialog.");
$('#button-text').text("Button");
$('#button-desc').text("Button that opens dialog only on Word 2016 or later.");
return;
}
$("#select1").select2({placeholder: 'Please choose' , language:'<%= I18n.locale %>',dropdownAutoWidth:true});
$(".select4").select2({placeholder: 'Please choose' , language:'<%= I18n.locale %>',dropdownAutoWidth:true});
});
}
})();
我认为这与我加载 JS 库的顺序有关。
你能指出我所缺少的方向吗?
【问题讨论】:
-
您是否尝试在附加的调试器下运行代码?您是否尝试过使用浏览器开发工具?您的主机应用程序是什么?您是否在所有支持的平台(浏览器、桌面等)上获得相同的结果?
-
您好尤金,谢谢您的评论。我已经尝试过开发人员工具,javascript 源代码没有完全加载。它发生在桌面版本、Mac 和 Windows 上。我在我的本地主机上尝试了它进行开发,并在 nginx 后面的 docker 容器上尝试了一个“高效”的测试环境......
-
您似乎在两个地方分配了 Office.initialize。如果这些调用在两个不同的页面上,那没关系。但是你不应该在同一个页面上这样做两次。
-
嗨 Rick,谢谢它现在可以工作了 :-) 你能把它作为答案,所以我可以接受吗?
标签: ruby-on-rails excel office-js office-addins excel-addins