如何在单页应用中加载新脚本
how to load a new script in a single-page app?
我正在尝试构建一个具有多个视图(屏幕,页面内容)的单页应用程序
我的应用程序的 UI 有一个永久菜单栏和一个"视图区域",它根据菜单选择通过 Ajax 检索视图。这适用于简单的 HTML 内容,并使我的菜单脚本在后台运行,无论显示哪个视图。
但是,如果我的视图需要额外的脚本怎么办?您如何加载和执行由于视图更改而导致的脚本(=由于单击按钮而加载页面片段)此外,当我选择其他视图时,如何摆脱该脚本?
我知道我可以将脚本标签嵌入到页面片段中并在那里编写代码,但我真的在寻找一种更强大的方法来做到这一点,最好是在加载视图时创建对象的实例,然后在视图更改时丢弃。
yepnope.js是一个很好的条件加载器。您可以使用它在加载脚本之前检查某些条件(例如视图、状态)。不过,我认为它无法删除已加载的脚本。
您可以使用 javascript 添加 <script>
标签,就像添加任何其他标签一样。
最困难的部分是知道在哪里放置它,但如果您可以控制标记,这并不是太大的障碍。
大致如下:
function DST(url)
{
var s = document.createElement(’script’);
s.type=’text/javascript’;
s.src= url;
document.getElementsByTagName(’head’)[0].appendChild(s);
}
如果您需要在加载该脚本时自动发生某些事情,您应该能够使用自执行的匿名函数来完成这项工作。
(function(){alert('this happened automatically');})();
如果您需要将任何内容传递给函数,它将如下所示:
(function($){alert('this happened automatically');})(jQuery);
如果确实需要丢弃脚本,可以删除节点,但最好保留它们,以防用户重新激活视图,这样就不必进行 AJAX 调用和关联的 HTTP 请求,从而加快页面加载速度。
相关文章:
- 如何在脚本上添加新行
- Javascript:在新页面中打开链接并运行脚本
- 更新脚本以针对具有递增 ID 的新创建的表行运行
- slideReveal 脚本 - 如何在打开新幻灯片之前关闭所有打开的“幻灯片”
- 为什么当我使用初始化触发器函数时,我总是找不到脚本函数:发送发票如果新
- 如何在边缘脚本完成后将用户定向到新页面
- 谷歌应用脚本打开新窗口
- 如何在同一选项卡中打开新脚本
- 为什么获胜't客户端在公用文件夹中接收此脚本的新版本
- 在java脚本的第一行之前添加新行
- 使用jquery html()将脚本插入到新窗口中
- 如何在chrome扩展中的新选项卡上加载url覆盖的脚本
- 使用Ajax加载页面,并在必要时加载新脚本
- 为什么我的脚本不使用keyup生成新行
- 新遗物脚本浏览器的本地运行器
- TinyMCE 中没有<样式>标签的脚本脚本
- 获取当前活动的输入字段.Chrome内容脚本.脚本注入
- 脚本脚本需要刷新页面才能运行
- 如何删除加载的脚本和添加新的脚本
- 如何在单击时插入新的脚本元素到另一个元素