index.ejs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <html>
  2. <head>
  3. <link rel="icon" href="./favicon.ico" />
  4. <meta charset="utf-8" />
  5. <title><%=title%></title>
  6. <meta
  7. name="viewport"
  8. content="width=device-width,user-scalable=no,initial-scale=1,minimum-scale=1,maximum-scale=1,minimal-ui=true"
  9. />
  10. <meta name="apple-mobile-web-app-capable" content="yes" />
  11. <meta name="full-screen" content="yes" />
  12. <meta name="screen-orientation" content="portrait" />
  13. <meta name="x5-fullscreen" content="true" />
  14. <meta name="360-fullscreen" content="true" />
  15. <meta name="renderer" content="webkit" />
  16. <meta name="force-rendering" content="webkit" />
  17. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  18. <link rel="stylesheet" type="text/css" href="./index.css" />
  19. <script src="./lib/ads5.js"></script>
  20. <!-- Single Error Handler for Preview -->
  21. <script>
  22. // Enable source map support in preview mode
  23. window.__PREVIEW_DEBUG__ = true;
  24. window.__SOURCE_MAPS_ENABLED__ = true;
  25. // Single error handler to avoid duplicate logging
  26. let errorLogged = false;
  27. window.addEventListener("error", function (event) {
  28. if (!errorLogged) {
  29. errorLogged = true;
  30. console.error("=== PREVIEW ERROR ===");
  31. console.error("Error:", event.error);
  32. // console.error("Message:", event.message);
  33. console.error("File:", event.filename);
  34. // console.error("Line:", event.lineno, "Column:", event.colno);
  35. // console.error("Stack:", event.error?.stack);
  36. // console.error("====================");
  37. // Reset flag after a delay to allow future errors
  38. setTimeout(() => {
  39. errorLogged = false;
  40. }, 1000);
  41. }
  42. });
  43. // Single promise rejection handler
  44. let rejectionLogged = false;
  45. window.addEventListener("unhandledrejection", function (event) {
  46. if (!rejectionLogged) {
  47. rejectionLogged = true;
  48. console.error("=== UNHANDLED PROMISE REJECTION ===");
  49. console.error("Reason:", event.reason);
  50. console.error("Stack:", event.reason?.stack);
  51. console.error("====================================");
  52. setTimeout(() => {
  53. rejectionLogged = false;
  54. }, 1000);
  55. }
  56. });
  57. console.log("Preview mode with single error handler enabled");
  58. </script>
  59. </head>
  60. <body style="overflow: hidden">
  61. <%- include(cocosToolBar, {config: config}) %>
  62. <div id="content" class="content" style="overflow: hidden">
  63. <div class="contentWrap">
  64. <div id="GameDiv" class="wrapper">
  65. <div id="Cocos3dGameContainer">
  66. <canvas
  67. id="GameCanvas"
  68. tabindex="-1"
  69. style="background-color: ''"
  70. ></canvas>
  71. </div>
  72. <div id="splash">
  73. <div class="progress-bar stripes"><span></span></div>
  74. </div>
  75. <div id="bulletin">
  76. <div id="sceneIsEmpty" class="inner"><%=tip_sceneIsEmpty%></div>
  77. </div>
  78. <div class="error" id="error">
  79. <div class="title">
  80. Error <i>(Please open the console to see detailed errors)</i>
  81. </div>
  82. <div class="error-main"></div>
  83. <div class="error-stack"></div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. <%- include(cocosTemplate, {}) %>
  89. <script type="module">
  90. // 文档加载完成时的逻辑
  91. async function onInit() {
  92. const adapter = await window.AbsHelper.create({
  93. network: "ccc",
  94. apiKey: "your-api-key",
  95. });
  96. let result = await window.AbsHelper.connect(adapter);
  97. console.log("result", result);
  98. }
  99. // document.addEventListener("DOMContentLoaded", onInit);
  100. </script>
  101. </body>
  102. </html>