HTML 5ͨ¹ýsandboxÊôÐÔÌáÉýiFrameµÄ°²È«ÐÔ
ת×Ô£ºInfoQ
×÷Õß
Abel Avram
ÒëÕß
ÕÅÁú
·¢²¼ÓÚ
2010Äê1ÔÂ30ÈÕ ÉÏÎç12ʱ6·Ö
ĿǰWeb Hypertext Application
Technology Working Group
£¨WHATWG£©ÕýÓëW3C
ͨ
Á¦ºÏ×÷½¨Á¢HTML 5±ê×¼£¬ÔÚ¹ýÈ¥3¸öÔÂÖУ¬¸ÃÏ×÷ÒѾ½øÈëµ½ÁËWHATWGµÄ“Last Call
”½×
¶Î¡£ÔÚÕâÆÚ¼ä£¬±ä»¯×î´óµÄÒ»¸öÌØÐÔ¾ÍÊÇiframeÔªËØµÄsandboxÊôÐÔ¡£sandboxÊôÐÔ¿ÉÒÔ·ÀÖ¹²»ÐÅÈεÄWebÒ³ÃæÖ´ÐÐijЩ²Ù×÷¡£
HTML
5
¹æ·¶µÄ±à¼Ian Hickson̸µ½ÁË
sandboxµÄºÃ´¦
£¬Ëü¿ÉÒÔ·ÀÖ¹ÈçϲÙ×÷£º
·ÃÎʸ¸Ò³ÃæµÄDOM£¨´Ó¼¼Êõ½Ç¶ÈÀ´Ëµ£¬ÕâÊÇÒòΪÏà¶ÔÓÚ¸¸Ò³ÃæiframeÒѾ³ÉΪ²»Í¬µÄÔ´ÁË£©
Ö´Ðнű¾
ͨ¹ý½Å±¾Ç¶Èë×Ô¼ºµÄ±íµ¥»òÊDzÙ×Ý±íµ¥
¶Ôcookie¡¢±¾µØ´æ´¢»ò±¾µØSQLÊý¾Ý¿âµÄ¶Áд
HTML
5µÄÐÞ¶©ÀúÊ·Ò³Ãæ
»¹Ìáµ½ÁËsandboxµÄÆäËûÌØÐÔ£º
½ûÓòå¼þ
½ûÖ¹ÆäËûä¯ÀÀÉÏÏÂÎĵĵ¼º½
½ûÖ¹µ¯³ö´°¿ÚºÍģʽ¶Ô»°¿ò
iFramesÒò°²È«ÎÊÌâ¶ø³ôÃûÕÑÖø£¬ÕâÖ÷ÒªÊÇÒòΪiFrames³£³£±»ÓÃÓÚǶÈëµÚÈý·½ÄÚÈÝ£¬¶øºóÕßÔò¿ÉÄÜ»áÖ´ÐÐijЩ¶ñÒâ²Ù×÷¡£sandboxͨ¹ý
ÏÞÖÆ±»Ç¶ÈëÄÚÈÝËùÔÊÐíµÄ²Ù×÷¶øÌáÉýiFramesµÄ°²È«ÐÔ¡£ÕâÖÖ·½Ê½½«É³ÏäÄÚÈÝÓë¸¸Ò³Ãæ½øÐÐÁË·ÖÀ룬Òò´ËÏÞÖÆÁ˱»Ç¶ÈëÄÚÈݵÄȨÏÞ¡£
ÓësandboxÒ»Æð³öÀ´µÄ»¹ÓÐÆäMIMEÀàÐÍ£ºtext/html-sandboxed¡£Hickson˵µ½£º
text/html-sandboxed
MIMEÀàÐÍÈ·±£Óû§²»»á·ÃÎʵ½²»¿ÉÐŵÄÄÚÈÝ¡£Ëü°üº¬Á½²¿·ÖÄÚÈÝ£ºÊ×ÏÈ£¬Èç¹ûÓû§Ö±½Ó·ÃÎÊÒ³ÃæÊ±£¬ä¯ÀÀÆ÷²»¿ÉÒÔäÖȾÄÇЩ¾ßÓÐtext/html-
sandboxed
MIMEÀàÐ͵ÄÒ³Ãæ¡£Ä¿Ç°ËùÓÐä¯ÀÀÆ÷¶¼Ö§³ÖÕâÒ»µã£¬ÕâЩä¯ÀÀÆ÷»áÏÂÔØÒ³ÃæµÄ±ê¼Çµ«²»»áäÖÈ¾Ò³Ãæ£»Æä´Î£¬Ö§³ÖsandboxÊôÐÔµÄä¯ÀÀÆ÷ÐèÒªäÖȾ¾ßÓÐ
text/html-sandboxed
MIMEÀàÐ͵Äiframes£¨µ«»áÊܵ½sandboxÊôÐÔÖÐËùÉ趨µÄȨÏÞÏÞÖÆ£©Ä¿Ç°ÎªÖ¹£¬»¹Ã»ÓÐä¯ÀÀÆ÷ʵÏÖÕâÒ»µã£¬Google
ChromeÒ²ÊÇÈç´Ë£¨Ëü»áäÖȾ¸¸Ò³Ã棬µ«È´ÏÂÔØiframeÄÚÈݶø·ÇÔÚiframeÖÐ¶ÔÆä½øÐÐäÖȾ£©¡£Òò´ËĿǰ»¹Ã»·¨Ê¹ÓøÃÏî¼¼Êõ£¬³ý·ÇGoogle¸ü
ÐÂChromeÒÔÖ§³ÖÕâÒ»µã£¨´ÓÀíÂÛÉÏÀ´Ëµ£¬ÆäËûµÄä¯ÀÀÆ÷³§ÉÌÔÚʵÏÖÁ˶ÔsandboxÊôÐÔµÄÖ§³Öºó¾Í»áʵÏָü¼Êõ£¬ÈÃÎÒÃÇÊÃÄ¿ÒÔ´ý°É£©¡£
Ŀǰ£¬Ö»ÓÐGoogle Chrome
4.0ʹÓÃÁËsandbox£¬Firefox¡¢IE8ºÍSafari¶¼»¹Ã»ÓÐʵÏÖÕâÒ»µã£¬µ«ÏàÐŲ»¾ÃÖ®ºóÕâЩä¯ÀÀÆ÷¶¼»áʵÏֵġ£Î§ÈÆ×ÅHTML 5
<video>ÔªËØ·¢ÉúÁ˺ܶàÊÂÇé
£¬Googleͨ¹ýH.264
±ê×¼¶ÔÆä½øÐÐʵÏÖ£¬¶ø
Ïà¹ØÎĵµ£º
×î½üÔÚʹÓÃextǶÈëhtmlÒ³ÃæµÄ¹ý³ÌÖУ¬Óöµ½Ò»¸öÎÊÌâ¡£ÎÒÃÇÒ³Ãæ¶¼ÊÇÓÃhtmlÖÆ×÷µÄ£¬ÓÃiframeµÄ·½Ê½Ç¶Èëµ½extµÄpanelÀï¡£ÆäÖÐÓÐÒ»¸öÒ³ÃæÊÇÔÚ°´Å¥´¥·¢µÄʱºò¼ÓÔØ½øÈ¥µÄ£¬µ«ÊÇÖØÐÂË¢ÐÂä¯ÀÀÆ÷£¬Ò³ÃæÈÔȻǶÈëÔÚpanelÖУ¬²¢Ã»ÓÐÐ¶ÔØµô£¬ÔÚÒ³ÃæÉÏÉèÖÃÇå¿Õ»º´æÒ²Ã»ÓÐЧ¹û¡£
ºóÀ´ÎÒ·¢ÏÖ£¬Ö»ÓÐÔÚä¯ÀÀÆ÷µØÖ·Àï ......
˵À´²ÑÀ¢£¬ÎÒ·¢ÏÖ×Ô¼ºÐ´µÄÄǸöhtml parse¹ýÓÚÀíÏ뻯£¬½âÎöxml»¹²î²»¶à£¬Ïë½âÎöÏÖ½ñµÄhtml£¬¹À¼ÆÊDz»´ó¿ÉÄܵģ¬ËùÒÔÎÒ°Ñ´úÂëÖØÐ´ÁËÒ»±é£¬Êý¾Ý½á¹¹¸Ä³ÉË«ÏòÁ´±í£¬ÕâÑù½âÎöËٶȸü¿ì£¬×î´ó³Ì¶ÈµØ¶Ôhtml½øÐÐÈÝ´í´¦Àí£¬ÊÔÑéʱ·¢ÏÖµÄÈ·¿ÉÒÔ½âÎöÆÕͨhtml×Ö·û´®£¬²»ÐèÒªÔÙÑϸñ·ûºÏÄǸöxhtml±ê× ......
String.prototype.HTMLEncode = function() {
var temp = document.createElement ("div");
(temp.textContent != null) ? (temp.textContent = this) : (temp.innerText = this);
var output = temp.innerHTML;
temp = null;
return output;
}
String.prototype.HTMLDecode = function() {
var temp = doc ......
<html>
<frameset cols="50%,*,25%">
<!-- ×ó±ßÒ³ÃæÕ¼50% ±»¹Ì¶¨×¡ÁË -->
<frame src="/example/html/frame_a.html" noresize="noresize"
/>
<frame src="/example/html/frame_b.html" />
<frame s ......
<html>
<head>
<title> </title>
<script type="text/javascript">
function rotateImage() {
imageToRotate = document.getElementById('imgRotate');
imageToRotate.style.filter= "progid:DXImageTransform.Microsoft ......