让我解释一下。我正在开发一个 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/