Javascript 如何在单页应用程序中加载新脚本?
我正在尝试构建一个具有多个视图(屏幕、页面内容)的单页应用程序 我的应用程序的UI有一个永久的菜单栏和一个“视图区域”,它根据菜单选择通过Ajax检索视图。这对于简单的HTML内容非常有效,并且无论显示哪个视图,都可以在后台运行我的菜单脚本 但是如果我的视图需要一个附加脚本呢?如何加载和执行视图更改后的脚本(=单击按钮后加载页面片段)此外,当我选择其他视图时,如何删除该脚本Javascript 如何在单页应用程序中加载新脚本?,javascript,html,web-applications,Javascript,Html,Web Applications,我正在尝试构建一个具有多个视图(屏幕、页面内容)的单页应用程序 我的应用程序的UI有一个永久的菜单栏和一个“视图区域”,它根据菜单选择通过Ajax检索视图。这对于简单的HTML内容非常有效,并且无论显示哪个视图,都可以在后台运行我的菜单脚本 但是如果我的视图需要一个附加脚本呢?如何加载和执行视图更改后的脚本(=单击按钮后加载页面片段)此外,当我选择其他视图时,如何删除该脚本 我知道我可以在页面片段中嵌入一个脚本标记并在那里编写代码,但我真的在寻找一种更健壮的方法来实现这一点,最好是在加载视图时创
我知道我可以在页面片段中嵌入一个脚本标记并在那里编写代码,但我真的在寻找一种更健壮的方法来实现这一点,最好是在加载视图时创建一个对象实例,然后在视图更改时丢弃。是一种很好的条件加载程序。在加载脚本之前,您可以使用它检查某些条件(例如视图、状态)。不过,我认为它无法删除已经加载的脚本。您可以使用javascript添加一个
标记,就像添加任何其他标记一样
最困难的部分是知道将其放置在何处,但如果您可以控制标记,这并不是一个太大的障碍
大致如下:
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请求,从而可以更快地加载页面。为什么要放弃脚本?如果你只是让它无法访问,那就更好了。那样的话,如果需要的话,它已经存在了。嗯,这并不是一个很大的要求。这是我在其他语言中习惯的。这里的主要问题是在需要时加载脚本。