我可以在加载新页面时加载 js 和 css 并在导航到另一个页面时卸载它吗

Posted

技术标签:

【中文标题】我可以在加载新页面时加载 js 和 css 并在导航到另一个页面时卸载它吗【英文标题】:Can i load js and css while loading new page and unload it while navigat to other 【发布时间】:2013-10-09 11:05:51 【问题描述】:

我正在使用 Worklight 6.0 并使用

 WL.Page.load("templates/a.html", 
        onComplete : function() 
          console.log("After fragment is loadded ");
        ,
        onUnload : function() 
          console.log("After fragment is unloadded ");
        
      );  

用于加载新页面并在 onComplete 方法中定义某些功能,并且我在索引页面上拥有与其他页面冲突的所有 css 和 js。我不希望所有css和js都在单个页面上,而不是这个我想在加载新页面时加载它并在加载其他页面时卸载它。 我该怎么做。

【问题讨论】:

【参考方案1】:

WL.Page API 已弃用,请改用 $.load()。 在此处查看培训模块和示例 - http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/03_02_Building_a_multi_page_application.pdf

【讨论】:

【参考方案2】:

仅供参考,WL.Page.Load 在 Worklight V6 中已被弃用,取而代之的是加载片段的原生 javascript 和移动框架方法。

您没有提及您是否使用移动框架,但我使用以下内容为 dojo 移动小部件加载 css:(domConstruct is: "dojo/dom-construct")

var link1 = domConstruct.create("link", 
    type : "text/css",
    rel : "stylesheet",
    href : "js/widget/themes/myCss1.css"
);
var link2 = domConstruct.create("link", 
    type : "text/css",
    rel : "stylesheet",
    href : "js/widget/themes/myCss2.css"
);

var head = document.getElementsByTagName("head")[0];
head.appendChild(link1);
head.appendChild(link2);

对于 jQuery,看起来答案就在这里:Dynamically loading css stylesheet doesn't work on IE

我想您可以将 css 附加到片段而不是文档头,以便在卸载片段时将其卸载。这里有一个关于这是否合法的争论:load external css file in body tag 当然,您可以在加载时将链接附加到头部,并在卸载片段时显式删除它。

如果您使用 dojo mobile 并将 JavaScript 组织到模块中,则无需显式加载 *.js 文件。只需使用 require() 按需加载所需的任何内容。

对于使用 jQuery mobile 的人来说,Require.js (http://requirejs.org) 也有类似的用途。

【讨论】:

以上是关于我可以在加载新页面时加载 js 和 css 并在导航到另一个页面时卸载它吗的主要内容,如果未能解决你的问题,请参考以下文章

我想用JS HTML CSS JQuery创建一个预加载屏幕(可选),没有后端

新“页面加载”时 Firefox 中的 Choppy 和 Jerky CSS3 动画

在页面加载时跟踪 JS CSS 资产错误

.net母版页中使用JS结合CSS的问题

使用 php,JS 强制浏览器在页面加载时使用最新的 JS 和 CSS 文件

无法在JHipster on Production上加载另一个页面