【发布时间】:2017-09-16 02:48:14
【问题描述】:
我有一个mean-stack 的网站。
通常,我所有的外部参考都列在index.html
我意识到我正在使用的一个外部 JS 库(例如,https://cdnjs.cloudflare.com/troublelibrary.js)与我网站的一部分存在冲突。所以我正在寻找的解决方法是不要为特定路径加载它https://www.myexample.com/specific。
有谁知道如何在路由中实现这一点?
编辑1:(查看完整问题here)
其实有conflit的库是history.js。我一直加载它的初始代码如下。结果https://localhost:3000/home在浏览器中总是https://localhost:3000/home(即不会添加#,因为history.js)
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script src="https://cdn.rawgit.com/devote/HTML5-History-API/master/history.js"></script>
然后,如果我按照 Ben 的建议尝试以下代码:
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script>
var newScript = document.createElement('script');
newScript.src = 'https://cdn.rawgit.com/devote/HTML5-History-API/master/history.js';
document.head.appendChild(newScript);
console.log(window.location.href)
</script>
我意识到第一次加载https://localhost:3000/home 不会改变。但是,如果我刷新浏览器,它可以变为https://localhost:3000/#/home。
所以附加脚本和直接引用不完全一样,有谁知道为什么?
【问题讨论】:
-
所以如果你在某个页面上,脚本不会被加载?我假设您使用的是单页 Angular 应用程序?
-
抱歉,如果我打开某个页面,我不想加载脚本;对于其他页面,脚本可以在一开始就加载。我正在使用单页角度应用程序。
-
用户可以直接导航到故障页面而不先进入主页(或任何其他页面)吗?还是他们必须先转到某个页面(如主页)才能进入故障页面?
-
别担心。将是我使用该特定页面,我不会从那里导航到其他页面;通常用户不太可能去那个特定的页面。
-
好的。如果用户首先导航到该页面,则无法加载脚本(简单的解决方案)。但是,如果他们先转到不同的页面,然后导航到故障页面,您将需要删除由冲突库创建的对象,因为它已经从前一页加载。然后,您将需要在其他页面上重新加载它。使用
window.location的条件,它根据您的 URL 加载/删除脚本应该可以工作。
标签: javascript angularjs angular-ui-router lazy-loading html5-history