Javascript 是否可以下载样式表并将其应用于HTML?
我用的是角度1.6。 我从nodejs服务器中动态地提取html,并将其写入页面上的div中Javascript 是否可以下载样式表并将其应用于HTML?,javascript,html,css,angularjs,node.js,Javascript,Html,Css,Angularjs,Node.js,我用的是角度1.6。 我从nodejs服务器中动态地提取html,并将其写入页面上的div中 <p ng-bind-html="htmlSource"></p> $scope.htmlSource = '<link rel="stylesheet" type="text/css" href="http://NOT-MY-SERVER/style.css"><div class='specialcss'></div>'; $scop
<p ng-bind-html="htmlSource"></p>
$scope.htmlSource = '<link rel="stylesheet" type="text/css" href="http://NOT-MY-SERVER/style.css"><div class='specialcss'></div>';
$scope.htmlSource='';
我能够很好地显示渲染的html。但是我没有正确的格式
我需要做的事情
这可能吗?将css样式表添加到“html代码段”可以通过以下步骤完成。但是,并非所有浏览器都支持阴影dom。 看起来是这样的:
var $compile = angular.element('body').injector().get('$compile');
var div = document.createElement('div');
var innerHtml = '<div ng-bind-html='myTemplate.html"/>'
innerHtml+='<link rel="stylesheet" type="text/css" href="http://NOT-MY-SERVER/style.css">';
var shadow = div.attachShadow({mode: 'open'});
shadow.innerHTML=innerHTML;
var element = $compile(shadow)(angular.element('body').scope());
angular.element('#parentElementInDomWhereYouWantYourTemplate').append(element)
var$compile=angular.element('body').injector().get('$compile');
var div=document.createElement('div');
var innerHtml='我刚刚尝试过,没有任何问题。。。检查此项您是否使用$sce
(严格上下文转义)服务?@the.Bear似乎$sce.trustAsHtml()是关键,正如我看到的.css文件正在下载。有没有一种方法可以将样式包含在这个html中,这样就不会影响我页面的其余部分?另外,添加了第三个要求。我可以防止/不信任html中的javascript吗?关于仅将样式应用于一个部分。。。css应用于整个文档,我看不到任何简单的解决方案(至少就我所知)。如果您可以操作服务器css文件,我认为如果您对所有css规则使用唯一的#id,并将该唯一的#id放入具有ng bind html
Shadow DOM的div中,这是一种更好的方法,但我不完全理解您的代码,无法使其工作。什么是myTemplate.html?你能再解释一下代码吗?myTemplate.html就是你的html源代码。我在提供的代码中所做的是创建一个HTML元素,使其成为shadowDOM根,这是带有attachshadow的行,然后设置内部HTML。由于内部HTML包含一个angular指令(ng bind HTML),您需要重新编译该指令才能执行!