Javascript 删除JS文件并包含另一个
我开始使用离线网络应用。我有一个小测试应用程序,可以在离线时使用localstorage制作一个简单的abm,我的想法是,当它在线时,应用程序使用php作为后端语言,并在连接恢复时同步localstorage和php 现在,用于将数据保存到localstorage的函数与用于将数据发送到php的函数不同 有没有可能,在日常生活中,卸载一个JS文件(让我们称之为offline.JS)并加载另一个(online.JS)Javascript 删除JS文件并包含另一个,javascript,html,offline,offlineapps,Javascript,Html,Offline,Offlineapps,我开始使用离线网络应用。我有一个小测试应用程序,可以在离线时使用localstorage制作一个简单的abm,我的想法是,当它在线时,应用程序使用php作为后端语言,并在连接恢复时同步localstorage和php 现在,用于将数据保存到localstorage的函数与用于将数据发送到php的函数不同 有没有可能,在日常生活中,卸载一个JS文件(让我们称之为offline.JS)并加载另一个(online.JS) 或者巫婆会是一个更好的办法?我是否应该将所有函数都包含在一个文件中,并手动更改侦
或者巫婆会是一个更好的办法?我是否应该将所有函数都包含在一个文件中,并手动更改侦听器?您应该使用函数包装器,启动IF条件检查浏览器是否联机 例:
并以不同方式处理每个函数体。在现代浏览器中,您可以使用navigator.onLine检查连接。以下是规格:
无法卸载javascript文件。一旦加载,它将始终被加载。你可能需要重新考虑一下你的设计 这里有一个可能的解决方案,您可能会发现它很有用 在所有逻辑所在的位置有一个函数命名空间,例如:
this.fn = {};
this.fn['save'] = function() {};
this.fn['load'] = function() {};
当您的事件被触发时,您只需使用适当的函数,如中所示:
var fn = this.fn['load'];
或
然后像平常一样使用“fn”
您甚至可以通过模块来分隔函数,例如“online.js”和“offline.js”,其中每个模块都有相同的函数名,但绑定到自己的命名空间
当需要重新链接功能时,您可以简单地执行以下操作:
this.fn['load'] = offlineModule.fn['load'];
如果您对所有函数都有一个名称(例如:“load”、“save”),您只需将其放在一个循环中即可
上述方法避免了所有“if/else”条件分支,这些分支有时会让人恼火,而是尝试使用一种模式
但无论如何,这个问题很好,因为我正在开始一个项目的计划阶段,我需要一些类似于你在问题中描述的东西。。。到目前为止,这是我最好的解决方案。本质上受Linux中SO的动态链接启发(有点)。您无法卸载javascript。将函数保留在对象内,并交换对象。
var fn = this.fn['load'];
var fn = this.fn['save'];
this.fn['load'] = offlineModule.fn['load'];