windows-8 – WinJS没有卸载js / css

我正在开发一个 Windows 8 Metro应用程序,我发现(即使在我没有触及代码的示例应用程序中),当您在页面之间导航时,顶级“default.html”获取每个单独的js和应用程序运行期间加载的css文件.

这让我感到很头疼,因为我的css在差异页面之间发生碰撞.我错过了什么或者这是严重的错误吗?

不卸载 JavaScript和CSS是一个慎重的选择,而不是意外或疏忽.

首先,要了解页面控件纯粹是一种JavaScript构造 – 浏览器引擎完全不了解它们.浏览器只看到一块由脚本动态生成的DOM.

Web平台不允许您卸载脚本文件 – 一旦它们被加载到上下文中,它们就永远存在.

使用CSS,他们可以尝试删除标签,但它会打开一堆蠕虫.根据导航到的订单页面,您最终可能会在同一个应用程序中应用不同的样式.如果两个页面引用相同的样式表怎么办?你是否两次添加相同的链接标签?你删除一个

一团糟.相反,Winjs保证脚本和样式表只会被引用一次,第一次被引用.因此,您可以让应用程序中的每个页面都引用“myStyles.css”,它只会被加载一次(并且只会有一个样式标记).

那你怎么做才能防止你所看到的问题呢?首先,请记住您正在构建一个应用程序,而不是一个随意增加内容的网站.确定您的一般风格和课程.将共享样式放在default.css中,并从default.html文件中引用它.

对于单个页面,最简单的方法是在样式前加上页面名称.代替:

<div class='intro'></div>

<div class='page1-intro'></div>

然后你保证避免碰撞.

如果您按ID引用页面元素,请不要这样做.在页面中使用ID会导致各种各样的潜在怪异(如果你同时渲染相同的页面控件两次怎么办?另外,直到页面加载到DOM之后ID才会存在,这意味着数据赢 – ID的选项引用不起作用).但是,如果你坚持,再次考虑使用页面为id添加前缀.

基本上,设置临时命名空间以防止碰撞.它比手动删除链接标记要容易得多,并且比完全导航更能提供更好的应用体验.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...