QuickBase:每次在表格中搜索时加载 javascript 文件
QuickBase: Load javascript file every time it searches in tables
好的,所以我有一个启动的 javascript 文件,它注入另一个 javascript 文件,每行创建一个复选框。 js 加载器文件如下所示:
//Run these scripts on all table pages
if (gReqTemplName == "searchresults") {
console.log(kRecordNamePlural, gReqQID);
if ((kRecordNamePlural == "Time Cards" && gReqQID == 37) || (kRecordNamePlural == "Milestone Payments" && gReqQID == 11) || (kRecordNamePlural == "Expenses" && gReqQID == 11)) {
$.getScript('/js/QuickBaseClient.js', function (data) {
$.getScript(gReqAppDBID + '?a=dbpage&pagename=approve.js');
});
};
}
这个特定的 pageID 37 table 有搜索功能。问题是,当我进行搜索时,注入的 javascript 不再起作用。意思是,结果中不再显示每行的复选框。
有什么想法吗?
每当使用搜索框时,报告的内容都会被删除和重写。由于不会重新加载页面来执行此操作,因此 approve.js
在加载页面时所做的任何更改都不会应用于新创建的元素。您可以使用此技术 here 在该报告更新后使您的代码 运行。您要缓存的方法是 QB.Faceting.Instance.tableHomePageView.reportView.updateReport
并且看起来像这样:
QB.Faceting.Instance.tableHomePageView.reportView.updateReport = (function(){
var cachedFunction = QB.Faceting.Instance.tableHomePageView.reportView.updateReport;
return function(){
var result = cachedFunction.apply(this, arguments);
// Your code that inserts checkboxes
};
})();
注意:如果 Quickbase 更改其方法名称或搜索框的工作方式,这将停止工作。如果这是一项关键业务功能,您可能需要编写一个自定义页面来处理自己的布局并通过 API 调用对记录进行更改。这样你就不会受到 UI 更新的影响。
好的,所以我有一个启动的 javascript 文件,它注入另一个 javascript 文件,每行创建一个复选框。 js 加载器文件如下所示:
//Run these scripts on all table pages
if (gReqTemplName == "searchresults") {
console.log(kRecordNamePlural, gReqQID);
if ((kRecordNamePlural == "Time Cards" && gReqQID == 37) || (kRecordNamePlural == "Milestone Payments" && gReqQID == 11) || (kRecordNamePlural == "Expenses" && gReqQID == 11)) {
$.getScript('/js/QuickBaseClient.js', function (data) {
$.getScript(gReqAppDBID + '?a=dbpage&pagename=approve.js');
});
};
}
这个特定的 pageID 37 table 有搜索功能。问题是,当我进行搜索时,注入的 javascript 不再起作用。意思是,结果中不再显示每行的复选框。
有什么想法吗?
每当使用搜索框时,报告的内容都会被删除和重写。由于不会重新加载页面来执行此操作,因此 approve.js
在加载页面时所做的任何更改都不会应用于新创建的元素。您可以使用此技术 here 在该报告更新后使您的代码 运行。您要缓存的方法是 QB.Faceting.Instance.tableHomePageView.reportView.updateReport
并且看起来像这样:
QB.Faceting.Instance.tableHomePageView.reportView.updateReport = (function(){
var cachedFunction = QB.Faceting.Instance.tableHomePageView.reportView.updateReport;
return function(){
var result = cachedFunction.apply(this, arguments);
// Your code that inserts checkboxes
};
})();
注意:如果 Quickbase 更改其方法名称或搜索框的工作方式,这将停止工作。如果这是一项关键业务功能,您可能需要编写一个自定义页面来处理自己的布局并通过 API 调用对记录进行更改。这样你就不会受到 UI 更新的影响。