qb-pc-sdk 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "qb-pc-sdk",
3
- "version": "1.2.2",
4
- "description": "趣变广告 SDK 封装器 -自动匹配地址",
3
+ "version": "1.2.3",
4
+ "description": "趣变广告 SDK 封装器 -自动匹配地址,备用地址",
5
5
  "main": "index.js",
6
6
  "files": [
7
7
  "index.js",
package/qb-pc-sdk.js CHANGED
@@ -99,22 +99,62 @@
99
99
 
100
100
  const baseUrl = getBaseUrl();
101
101
 
102
- const loadScript = function (url, callback) {
102
+ const loadScript = function (primaryUrl, callback, fallbackUrl) {
103
+ if (document.querySelector('script[src="' + primaryUrl + '"]')) {
104
+ if (callback) callback();
105
+ return;
106
+ }
107
+
108
+ if (fallbackUrl && document.querySelector('script[src="' + fallbackUrl + '"]')) {
109
+ if (callback) callback();
110
+ return;
111
+ }
112
+
103
113
  const script = document.createElement("script");
104
- script.src = url;
114
+ script.src = primaryUrl;
105
115
  script.async = true;
116
+
106
117
  script.onload = function () {
107
118
  if (callback) callback();
108
119
  };
120
+
109
121
  script.onerror = function () {
110
- console.error("[qb-pc-sdk] 加载失败:", url);
111
- window._qbPcSdkLoading = false;
122
+ console.error("[qb-pc-sdk] 主 CDN 加载失败:", primaryUrl);
123
+
124
+ if (fallbackUrl) {
125
+ if (document.querySelector('script[src="' + fallbackUrl + '"]')) {
126
+ if (callback) callback();
127
+ return;
128
+ }
129
+
130
+ console.log("[qb-pc-sdk] 尝试备用 CDN:", fallbackUrl);
131
+ const fallbackScript = document.createElement("script");
132
+ fallbackScript.src = fallbackUrl;
133
+ fallbackScript.async = true;
134
+
135
+ fallbackScript.onload = function () {
136
+ if (callback) callback();
137
+ };
138
+
139
+ fallbackScript.onerror = function () {
140
+ console.error("[qb-pc-sdk] 备用 CDN 也加载失败:", fallbackUrl);
141
+ window._qbPcSdkLoading = false;
142
+ };
143
+
144
+ document.head.appendChild(fallbackScript);
145
+ } else {
146
+ window._qbPcSdkLoading = false;
147
+ }
112
148
  };
149
+
113
150
  document.head.appendChild(script);
114
151
  };
115
152
 
116
153
  const originSdkUrl = `${baseUrl}/qb-pc-ad-sdk-origin/dist/qb-pc-ad-sdk.v1.0.0.js`;
117
154
  const wrapperSdkUrl = `${baseUrl}/qb-pc-sdk/src/ad-sdk-wrapper.js`;
155
+
156
+ const fallbackOriginSdkUrl = "https://unpkg.com/qb-pc-ad-sdk-origin@latest/dist/qb-pc-ad-sdk.v1.0.0.js";
157
+ const fallbackWrapperSdkUrl = "https://unpkg.com/qb-pc-sdk@latest/src/ad-sdk-wrapper.js";
118
158
 
119
159
  let originSdkLoaded = false;
120
160
  let wrapperSdkLoaded = false;
@@ -145,12 +185,12 @@
145
185
  loadScript(originSdkUrl, function () {
146
186
  originSdkLoaded = true;
147
187
  checkBothLoaded();
148
- });
188
+ }, fallbackOriginSdkUrl);
149
189
 
150
190
  loadScript(wrapperSdkUrl, function () {
151
191
  wrapperSdkLoaded = true;
152
192
  checkBothLoaded();
153
- });
193
+ }, fallbackWrapperSdkUrl);
154
194
  })(
155
195
  typeof window !== "undefined"
156
196
  ? window
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Native广告异步加载测试</title>
7
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" defer></script>
8
-
7
+ <!-- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" defer></script> -->
8
+ <script src="../qb-pc-sdk.js" defer></script>
9
9
  <style>
10
10
  body { margin: 0; padding: 20px; font-family: sans-serif; background: #f0f2f5; }
11
11
  .control-panel { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); margin-bottom: 20px; display: flex; gap: 15px; max-width: 900px; margin: 0 auto; }
@@ -77,7 +77,7 @@
77
77
  }
78
78
  });
79
79
 
80
- // 2. 兜底轮询:防止由于 defer 脚本执行太快,导致事件监听器还没注册好就错过了事件
80
+ // 2. 兜底轮询:防止由于 async 脚本执行太快,导致事件监听器还没注册好就错过了事件
81
81
  const checkReady = setInterval(() => {
82
82
  if (window.AdSDK && !isSdkReady) {
83
83
  clearInterval(checkReady);