????????????????????????????????????????????????????????????????????????
????????
????HTML5 ??????????? EventSource ????????????÷??? WebSocket ???????????????????????????з?????
??????????????о????????????????????????????????????????????????????Щ????????????????
????API ????
??????????????????????飬?????????????????????????·????
???????????????
?????????????? Chrome ????????????????????????
????createElement / createElementNS ????????
????cloneNode ???????
????innerHTML / outerHTML ????????
?????????????????????????????
?????????????? inner/outerHTML ?????? property?????? attribute?????? Chrome ??????????????????????????ù????????????????????
?????????inner/outerHTML ??????????????????????????????????????????????????????????????????????? innerHTML ????????????????????????е???????????????У????????????????????
????????????迼????????????
?????????????????????y??????????????????????????????????????????? ?????????????????????????????????????????????ù????
????????? innerHTML ?????????????????е???????????????ɡ?
?????????????????
??????????????????????????????????????????? property???????????????????Ч???????????о??????????????????????Щ????·??????????y?????д????????
??????? Chrome ???????????
???????????????
????????????????? setAttribute ????? setAttributeNode ???????????????????? setAttributeNS ?汾???
???????? setAttribute ???????????????????????????????????????????????????????????
????????滷??
??????????ü??????????????????????????????????
????????
????????????????????滷????????????????????????????????????????????????????????£?

<style> .aa { color: red }</style>
<button id="btn">POPUP</button>
<script>
btn.onclick = function() {
var win = window.open();
var raw_fn = win.Element.prototype.setAttribute;
win.close();
setTimeout(function() {
console.log(raw_fn);
raw_fn.call(btn?? 'class'?? 'aa');
}?? 1000);
};
</script>
Run
??????????????????????????′???????????????????????????????????????á?????????????????????????????????????????????????
????????У??????????????? document ????????????????????????????????????????
??????????????e???????????????????????????
???????????? window.open????????У?
????showModalDialog
????showModelessDialog
????opener
?????????????????????????????????????????????????window.opener ??????????????????
?????????????????????????????????????????????????????
?????????????????????????????б????????????????????????????????????????б?????
????????????????????????? window.opener ??????????????????????3?????????????
?????????window.opener ???????????? opener????????????????к??????????????????????????????? window.opener ???????з?????????????????????У????????????????
????????????????????????????????????????????????????????е???η??? opener ????????????з?????
????????? window.opener ??????д???????????? getter ????????
var raw_opener = window.opener;
var scanned;
window.__defineGetter__('opener'?? function() {
if (!scanned) {
installHook(raw_opener);
scanned = true;
}
return raw_opener;
});
?????????????????? opener?????????????????????????????????С?
???????
???????????????????????????????????????????????????????????
?????????????????????????????????????????ж?????
??????????????????????????????????????????????????????????????????????????