onerror.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. window.onerror = function handleErr(msg, url, line, colno, error) {
  2. try {
  3. let data = "";
  4. let title = "";
  5. if (error.stack) {
  6. let text = "----------------------------------------------------------------------------\n";
  7. text = text + error.stack + "\n";
  8. text = text + "-----------------------------------------------------------------------------\n";
  9. title = "onerror.stack__" + url;
  10. data = error.stack;
  11. console.error('error.stack', text);
  12. }
  13. else {
  14. let text = "----------------------------------------------------------------------------\n";
  15. text = text + url + " (" + line + ":" + colno + ")\n";
  16. text = text + "-----------------------------------------------------------------------------\n";
  17. title = "onerro.nostack__" + url;
  18. data = line + ":" + colno;
  19. console.error('error.stackelse', text);
  20. }
  21. let senddata = {
  22. "level": "error",
  23. "game": "tower",
  24. "message": data,
  25. }
  26. const Http = new XMLHttpRequest();
  27. Http.responseType = "text";
  28. const send_url = 'https://elktest.duiweize.com/api/logs/record';
  29. Http.open("POST", send_url);
  30. Http.setRequestHeader("Content-Type", 'application/json;charset=UTF-8');
  31. let str = JSON.stringify(senddata);
  32. let options = {
  33. default_key_size: 2048,
  34. default_public_exponent: new Uint8Array([0x01, 0x00, 0x01])
  35. }
  36. let jsb = new window['JSEncrypt'](options)
  37. //公钥
  38. var publicString = '-----BEGIN PUBLIC KEY-----\n' +
  39. 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwz5V8wt525dMS+A9wOd\n' +
  40. 'NAjvKgxdyoXYuZSlAJEXLhvJlaXwFCKEsUg/qBBeo4nrRnwaFAjG7ItqbCWR9Ozv\n' +
  41. '6oY5tMYQnFFK82XkMGbKm1gG0z9vYKhcNYgHZHi+QKAw4tLLWXWO/QBTGelEXptD\n' +
  42. 'azlNmdM+8wHOknTcMuIyjc9Yo5qCoNsCJpA465vnREiBezBbKB3rSw+LmrRcZcFk\n' +
  43. 's8hmGtjpabcQ8sCxco7mRzVh6/DomNWfNm7hUP6shrrJirwjQtaS51grlScj8KhN\n' +
  44. 'h+kBoiI4Ad0Xz0GHasK5hAMf3sXDsN61r0An8KTfa/nsYSJDwogPIKkeKAsmw9Df\n' +
  45. 'EQIDAQAB\n' +
  46. '-----END PUBLIC KEY-----'
  47. jsb.setPublicKey(publicString)
  48. // 加密内容
  49. str = jsb.encrypt(str)
  50. Http.send(str);
  51. } catch (e) { }
  52. return false;
  53. };