Javascript 如何在单页应用程序中加载新脚本?

Javascript 如何在单页应用程序中加载新脚本?,javascript,html,web-applications,Javascript,Html,Web Applications,我正在尝试构建一个具有多个视图(屏幕、页面内容)的单页应用程序 我的应用程序的UI有一个永久的菜单栏和一个“视图区域”,它根据菜单选择通过Ajax检索视图。这对于简单的HTML内容非常有效,并且无论显示哪个视图,都可以在后台运行我的菜单脚本 但是如果我的视图需要一个附加脚本呢?如何加载和执行视图更改后的脚本(=单击按钮后加载页面片段)此外,当我选择其他视图时,如何删除该脚本 我知道我可以在页面片段中嵌入一个脚本标记并在那里编写代码,但我真的在寻找一种更健壮的方法来实现这一点,最好是在加载视图时创

我正在尝试构建一个具有多个视图(屏幕、页面内容)的单页应用程序

我的应用程序的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请求,从而可以更快地加载页面。

为什么要放弃脚本?如果你只是让它无法访问,那就更好了。那样的话,如果需要的话,它已经存在了。嗯,这并不是一个很大的要求。这是我在其他语言中习惯的。这里的主要问题是在需要时加载脚本。