为什么 ngif 不从我的代码中删除脚本标签?
Why does ngif not remove script tags from my code?
我有几个脚本标签要根据条件删除。在 DOM 中,我看到它们不存在(它们被注释掉了),但我仍然看到它们从控制台喷出。无论如何都加载脚本标签吗?如果是这样,有人对此有任何解决方法吗?
<script ng-if="myCondition" src="blah blah.js"></script>
删除与否并不重要。到 angular 启动并开始 DOM 操作时,所有脚本标签都将由浏览器编译。
删除脚本标签不会删除已编译的代码。
如果没有更多关于您要完成什么或脚本做什么的更多信息,这就是目前可以提供的所有信息。
我建议您阅读有关在 html 编译为 DOM 时浏览器如何处理网页的基础知识。一旦它遇到带有 src
的脚本标签,就会对该文件发出请求并且无法拦截它。
作为解决方法,您可以按如下方式手动插入脚本:
function loadScript() {
var $script = document.createElement('script');
$script.src = 'blah blah.js';
$script.id = 'someId';
document.body.appendChild($script);
}
$rootScope.watch(myCondition, function(value) {
if(myCondition && !document.getElementById('someId') {
loadScript();
isScriptInserted = true;
}
});
我有几个脚本标签要根据条件删除。在 DOM 中,我看到它们不存在(它们被注释掉了),但我仍然看到它们从控制台喷出。无论如何都加载脚本标签吗?如果是这样,有人对此有任何解决方法吗?
<script ng-if="myCondition" src="blah blah.js"></script>
删除与否并不重要。到 angular 启动并开始 DOM 操作时,所有脚本标签都将由浏览器编译。
删除脚本标签不会删除已编译的代码。
如果没有更多关于您要完成什么或脚本做什么的更多信息,这就是目前可以提供的所有信息。
我建议您阅读有关在 html 编译为 DOM 时浏览器如何处理网页的基础知识。一旦它遇到带有 src
的脚本标签,就会对该文件发出请求并且无法拦截它。
作为解决方法,您可以按如下方式手动插入脚本:
function loadScript() {
var $script = document.createElement('script');
$script.src = 'blah blah.js';
$script.id = 'someId';
document.body.appendChild($script);
}
$rootScope.watch(myCondition, function(value) {
if(myCondition && !document.getElementById('someId') {
loadScript();
isScriptInserted = true;
}
});