confirm.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. function checkScript(t){
  2. if(/^\s*</.test(t)) { // seems to be HTML code
  3. M.innerHTML=_('msgNotJS',[data.url]);
  4. chrome.runtime.sendMessage({cmd:'LoadDirectly',data:data.url},function(){
  5. setTimeout(function(){location.replace(data.url);},3000);
  6. });
  7. } else { // may be JS code
  8. M.innerHTML=_('msgLoadedJS',[data.url]);
  9. T.setValueAndFocus(t);
  10. I.disabled=false;
  11. }
  12. }
  13. var $=document.getElementById.bind(document),M=$('msg'),I=$('bInstall'),data={},
  14. B=$('bClose'),C=$('cClose'),T;
  15. B.onclick=function(){window.close();};
  16. C.onchange=function(){
  17. chrome.runtime.sendMessage({cmd:'SetOption',data:{key:'closeAfterInstall',value:C.checked}});
  18. };
  19. I.onclick=function(){
  20. chrome.runtime.sendMessage({
  21. cmd:'ParseScript',
  22. data:{
  23. url:data.url,
  24. from:data.from,
  25. code:T.getValue(),
  26. },
  27. });
  28. I.disabled=true;
  29. };
  30. initEditor(function(o){T=o;},{exit:B.onclick,readonly:true});
  31. initCSS();initI18n(function(){document.body.classList.remove('hide');});
  32. chrome.runtime.onMessage.addListener(function(req,src,callback) {
  33. var maps={
  34. ShowMessage: function(o){
  35. M.innerHTML=o.message;
  36. if(callback) callback();
  37. if(o.status>=0&&C.checked) window.close();
  38. },
  39. },f=maps[req.cmd];
  40. if(f) f(req.data,src,callback);
  41. return true;
  42. });
  43. chrome.runtime.sendMessage({cmd:'GetOption',data:'closeAfterInstall'},function(o){
  44. C.checked=!!o;
  45. var s=location.search.slice(1);
  46. s.split('&').forEach(function(i){
  47. i.replace(/^([^=]*)=(.*)$/,function(r,g1,g2){data[g1]=decodeURIComponent(g2);});
  48. });
  49. function error(){M.innerHTML=_('msgErrorLoadingURL',[data.url]);}
  50. if(!data.url) error(); else {
  51. M.innerHTML=_('msgLoadingURL',[data.url]);
  52. var x=new XMLHttpRequest();
  53. x.open('GET',data.url,true);
  54. x.onloadend=function(){
  55. if((!this.status||this.status==200)&&this.responseText) checkScript(this.responseText);
  56. else error();
  57. };
  58. x.send();
  59. }
  60. });