Javascript 是否可以下载样式表并将其应用于HTML?

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

我用的是角度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>';

$scope.htmlSource='';
我能够很好地显示渲染的html。但是我没有正确的格式

我需要做的事情

  • 获取css,它不是来自我的服务器。(css不应该遇到跨站点脚本问题,对吗?)
  • 仅将其应用于html代码段(而不是覆盖我的网站的默认css)
  • 阻止html中任何附带的javascript运行

  • 这可能吗?

    将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),您需要重新编译该指令才能执行!