完成就绪状态后,清除缓存后,JS函数只会运行一次?
Posted
技术标签:
【中文标题】完成就绪状态后,清除缓存后,JS函数只会运行一次?【英文标题】:When ready state is completed, a JS function would run only one time after clearing cache? 【发布时间】:2021-11-15 17:29:56 【问题描述】:readyState 完成后,会执行一些代码,但它在 chrome 浏览器上不起作用,直到清除缓存然后它只运行一次。如果我刷新,该代码将不会再次执行,直到再次清除缓存并且它只运行一次。我必须在就绪状态完成时执行代码,因为它运行在一个数据表上,该数据表在就绪状态完成之前不会被加载。我尝试在Documnt.ready 上执行相同的代码,但它没有找到数据表元素的ID,所以什么也没发生。这是使用的代码:
$(document).on("readystatechange", function(e)
if (document.readyState == "complete")
$(`#salaries-datatable-table`).wrap("<div class='col-12' style='overflow-x:auto'></div>");
$("#salaries-datatable-table_wrapper .dt-buttons").append(`<button class="btn btn-outline-
blue btn_size">OK</button>`);
);
结果是:对于包装,不仅表会被包装,而且它的容器 div 也会被包装,对于附加,除了清除缓存后代码第一次运行之外,什么都不会发生,按钮将被附加并且只有表会被包装.我希望我能适当地解释一下。
【问题讨论】:
OT - 认为您的意思是缓存而不是现金。一个是(短期)存储,另一个是货币。 是的,我的意思是缓存(清除浏览数据)。抱歉这个冲突,我已经编辑了问题 【参考方案1】:这个解决方案对我有用: 经过搜索,发现Eventinit.dt是在数据表初始化后触发的,所以不需要检查ready状态是否完成,on init.dt在ready状态完成前触发及其行为在移动设备或chrome浏览器上没有区别,与清除缓存无关,使用的代码:
$(`#salaries-datatable-table`).on('init.dt', function()
console.log('Table initialisation complete ');
$(this).wrap("<div class='col-12' style='overflow-x:auto'></div>");
$(this).find(".dt-buttons").append(`<button class="btn">OK</button>`);
);
但是,当就绪状态完成时,我仍然没有得到什么。希望有人能解释一下。
【讨论】:
以上是关于完成就绪状态后,清除缓存后,JS函数只会运行一次?的主要内容,如果未能解决你的问题,请参考以下文章
PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?