javascript - 我可以将 javascript 存储在本地存储对象中并运行它吗?

标签 javascript jquery

让我解释一下。我正在开发一个 JavaScript 应用程序来帮助人们开发网站。我不会明确地讨论它的作用,只是知道它的工作原理是将其 html/内联 css 界面叠加在正在开发的网站上,并提供各种工具,例如跟踪图像和代码压缩器。

我将其作为 .js 文件存储在服务器上。要访问我的应用程序,人们只需复制一小段 html 并将其粘贴到他们的页面上即可使用它,如下所示:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="www.example.com/application.js">
<div class="application"></div>

然后使用 jquery 的 .html() 函数将界面的 html 和内联 css 插入到“application”div 中。

一切都很完美。

除了一件事之外。加载时间。当用户开发他们的网站时,他们将不断刷新他们的页面,这导致他们必须等待大约 3 秒(随着时间的推移非常烦人)才能加载应用程序的界面。

当然,如果浏览器的缓存已打开,问题就会消失,但如果您正在开发网站,您会希望禁用缓存!这是一个难题。

然后我想到使用本地存储对象来保存界面的svg图形的字符串,然后.html()将这些字符串转换为内联css。这是一个精心设计的解决方法,但只有开发人员会使用此工具。这不是最终用户的事情。它工作起来也很漂亮,但问题是,浏览器仍然需要下载脚本才能知道访问本地存储的图像!处理器速度并不是其瓶颈,而是带宽。

所以我正在考虑将脚本本身存储在本地存储对象中,并使用一个微小的初始化脚本来运行它。

初始化脚本只是从本地存储对象中以字符串形式检索脚本,相应地解析它然后运行它。

重申我的问题,运行它是我不能做的部分!我可以通过 .html(script) 将脚本插入到页面上,但是如何运行它呢?

最佳答案

虽然使用 eval(myScript) 是最直接的方法,但我更喜欢这样:

var script = document.createElement('script');
script.src = 'data:text/javascript,' + encodeURI(myScript);
script.onload = function() {
  //optional callback
};
document.body.appendChild(script);

这是使用数据 uri 作为源插入实际的脚本标记。这样,它将出现在开发工具的资源选项卡上的“脚本”下。当脚本加载时,数据 uri(您的代码)将被执行。

关于javascript - 我可以将 javascript 存储在本地存储对象中并运行它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18313770/

相关文章:

javascript - 如何克隆 <a href ="#">Barbara is so Nice</a> 的 anchor html 值并将其附加到 div 容器

javascript - Electron ipcMain 未定义

jquery - 使用jquery ajax调用导出到excel

javascript - 根据数值自动选择

jquery - 覆盖默认的 jquery css?

jquery - 想要摆脱 Bootstrap 导航栏上的细线

javascript - 侧边栏在openlayers map下如何设置css

javascript - 如何在输入框中显示数量总数

javascript - 如何创建重定向到 URL 的 HTML 取消按钮

jquery - Cycle jQuery插件,图片可以直观地双向滑动吗?