我有一个具有以下要求的应用程序:
应用程序的页面始终包含页眉、主要内容(居中)和页脚。根据用户要求,页眉和页脚应保持静态,每当用户从一个页面导航到另一页时,应用程序应仅刷新主要内容(中心)而不刷新页眉和页脚。
该应用程序最初是由其他前同事设置的,它不是使用单页应用程序,但我们不喜欢使用 iframe 来实现上述要求。我们使用的方法是:使用JQuery从服务器获取页面,然后通过命令$(div).html();将页面渲染成一个专用的html div;
但是,现在我们注意到我们使用的方法存在一些潜在问题。从 JQuery 中检索到的页面,其中大部分包含 javascript 对象(变量、函数),默认情况下这些对象是全局的。如果不刷新/重新加载整个页面,javacript 对象将保留在那里,这可能会导致意外行为,更多的 javascript 对象将在页面中累积,从而影响性能。
我已经尝试过 JQuery.empty() 方法,但是它只清除 DOM 元素而不是那些 javascript 对象。
下面是我们如何将主要内容渲染到中心 div 中:
function switchPage(pageUrl) {
$.ajax({
url: context + pageUrl,
cache: false,
success: function(result) {
$("#main-content-panel").html(result);
}
});
}
请告知有一种方法可以用最少的努力有效地清除那些 javascript 对象吗?或者,如果这些 JQuery 方法从一开始就是一个错误的选择,那么有什么可以是一种更改工作量最小的更好方法(因为我们已经构建了许多页面,因此我们希望将更改减到最少)。
质量问题。
最佳答案
这很脏,但你可以尝试快速解决:
如果您已经加载了全局 JavaScript,您唯一需要做的就是通过删除所有“script”标签从传入结果中删除所有 javascript。如果您需要使用例如保留一些脚本。新变量、要替换的函数等。您可以用例如标记它们。 “实时脚本”类:
function switchPage(pageUrl) {
$.ajax({
url: context + pageUrl,
cache: false,
success: function(result) {
var $result = $(result).find("script:not(.live-script)").remove();
$("#main-content-panel").html($result);
}
});
}
关于javascript - 如何清除从 JQuery.HTML() 检索到的 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738344/