如何隔离网页中的部件,以便一部分不会影响其他部件

时间:2016-11-03 05:26:13

标签: error-handling runtime-error integration webpage defensive-programming

我正在管理一个项目,由多个开发人员在网页的不同部分进行开发。由于副作用,我们在组合网页的各个部分时面临集成问题。

如果Web部件出现错误,写入不佳或被Web过滤器阻止,则会影响网页其他部分的呈现。

有没有办法干净地划分网页?

我的研究指出,只有共享点Web部件,而不是针对这个确切问题的方法或框架。 IFrame Isolation是相关的,但该解决方案类似于在圆孔中放置方形钉。

1 个答案:

答案 0 :(得分:0)

  

如果网页部件出现错误或写得不好或者网页过滤被阻止,则会影响网页其他部分的呈现。

使用try / catch块:



window.addEventListener("error", function(e){return false;}, true);
try{angular.run();}
catch(e){console.log(e.toString() )};
$("body").append("<div>Hi</div>");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

或延迟加载:

&#13;
&#13;
void(function foo()
  {
  /* get head element */
  var head = document.getElementsByTagName("head")[0];

  /* create script element */
  var jQueryJS = document.createElement("script");


  /* define script src attribute to lazy load */
  jQueryJS.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js";

  /* append script */
  head.appendChild(jQueryJS);


  /* call tests after jQuery loads */
  jQueryJS.onload = function () 
    {
    $("body").append("<h1>Hi</h1>");
    }
  }() 
);
&#13;
&#13;
&#13;

其他方法包括:

  • HTML5沙箱/支持CSP的安全架构
  • TreeHouse:网络工作者沙箱架构
  • JSand:安全的ECMAScript(SES)启用的沙箱架构
  • ADSafe:虚拟iframe

<强>参考