好的,我有一个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表具有搜索功能。问题是,当我进行搜索时,注入的javascript不再工作了。也就是说,每行的复选框在结果中不再显示。
有什么想法吗?
发布于 2016-04-20 22:56:14
每当使用搜索框时,都会删除和重写报表的内容。由于页面没有重新加载,所以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更新的影响。
https://stackoverflow.com/questions/36229215
复制相似问题