qb-pc-sdk 1.2.3 → 1.2.5

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/README.md CHANGED
@@ -114,12 +114,39 @@ npm install qb-pc-sdk
114
114
 
115
115
  ### CDN 方式
116
116
 
117
- 无需安装,直接在 HTML 中引入一个文件即可:
117
+ #### 内联版本(最推荐,容灾100%达成)
118
+
119
+ **优势:**
120
+ - ✅ **容灾100%达成**:即使主 CDN 域名挂了,内联代码依然会运行并自动切换到备用 CDN
121
+ - ✅ **CDN 只请求一次**:直接加载 `core.min.js`,无需额外的引导文件
122
+ - ✅ **无需维护外部文件**:逻辑直接内联在 HTML 中,不依赖外部 `qb-pc-sdk.js`
123
+ - ✅ **Windows 环境自动检测**:非 Windows 环境自动跳过,不发起请求
124
+
125
+ **使用方法:**
126
+
127
+ ```html
128
+ <script>
129
+ (function(g){"use strict";var w=g&&g.window?g.window:(typeof window!=="undefined"?window:g),d=w.document;if(!d||w._qbPcSdkLoading||w.AdSDK)return;var ua=(w.navigator&&w.navigator.userAgent)||"",p=w.navigator.platform||"";if(/Android|iPhone|iPad|iPod|Mac|webOS|BlackBerry|IEMobile|Opera Mini/i.test(ua)||!/Win|Windows/i.test(ua+p))return;w._qbPcSdkLoading=true;var pr="https://file.qubiankeji.com/qb-pc-sdk/core.min.js",fb="https://unpkg.com/qb-pc-sdk@latest/core.min.js";var c=function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{setTimeout(function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK初始化失败"),AdSDK:null,GDTAdSDK:null}}));}},100);}};var l=function(p,f){if(d.querySelector('script[src="'+p+'"]')||d.querySelector('script[src="'+f+'"]')){c();return;}var s=d.createElement("script");s.src=p;s.async=true;s.onload=c;s.onerror=function(){if(!d.querySelector('script[src="'+f+'"]')){var fs=d.createElement("script");fs.src=f;fs.async=true;fs.onload=c;fs.onerror=function(){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK加载失败"),AdSDK:null,GDTAdSDK:null}}));};d.head.appendChild(fs);}else{c();}};d.head.appendChild(s);};l(pr,fb);})(typeof window!=="undefined"?window:(typeof global!=="undefined"?global:this));
130
+ </script>
131
+ ```
132
+
133
+ **说明:**
134
+ - 主 CDN:`https://file.qubiankeji.com/qb-pc-sdk/core.min.js`
135
+ - 备用 CDN:`https://unpkg.com/qb-pc-sdk@latest/core.min.js`
136
+ - 代码长度:约 1.6KB(压缩后)
137
+ - 当主 CDN 无法访问时,自动切换到备用 CDN
138
+ - **推荐用于所有生产环境**
139
+
140
+ #### 外部文件方式(兼容旧版本)
141
+
142
+ 如果不想使用内联版本,也可以使用外部文件:
118
143
 
119
144
  ```html
120
145
  <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js"></script>
121
146
  ```
122
147
 
148
+ **注意:** 外部文件方式需要额外的 HTTP 请求,且容灾效果不如内联版本。
149
+
123
150
  ## 使用方法
124
151
 
125
152
  ### 方式一:NPM 接入(模块化项目)
@@ -201,8 +228,23 @@ new AdSDK({
201
228
  <body>
202
229
  <div id="ad-container"></div>
203
230
 
204
- <!-- 只需引入一个文件,会自动加载底层 SDK 和封装 SDK -->
205
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js"></script>
231
+ <!-- 只需引入一个文件,会自动加载底层 SDK 和封装 SDK(容灾版本) -->
232
+ <script>
233
+ (function() {
234
+ var primaryUrl = 'https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js';
235
+ var fallbackUrl = 'https://unpkg.com/qb-pc-sdk@latest/qb-pc-sdk.js';
236
+ var script = document.createElement('script');
237
+ script.src = primaryUrl;
238
+ script.async = true;
239
+ script.onerror = function() {
240
+ var fallbackScript = document.createElement('script');
241
+ fallbackScript.src = fallbackUrl;
242
+ fallbackScript.async = true;
243
+ document.head.appendChild(fallbackScript);
244
+ };
245
+ document.head.appendChild(script);
246
+ })();
247
+ </script>
206
248
 
207
249
  <!-- 使用 SDK -->
208
250
  <script>
@@ -283,7 +325,7 @@ new AdSDK({
283
325
 
284
326
  #### 基本用法(一键复制粘贴)
285
327
 
286
- **步骤 1:** 复制以下代码
328
+ **步骤 1:** 复制以下代码(内联版本,容灾100%达成,推荐)
287
329
 
288
330
  ```html
289
331
  <ins class="qb-adsbyqubian"
@@ -291,7 +333,9 @@ new AdSDK({
291
333
  data-app-id="your-app-id"
292
334
  data-placement-id="your-placement-id">
293
335
  </ins>
294
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" async></script>
336
+ <script>
337
+ (function(g){"use strict";var w=g&&g.window?g.window:(typeof window!=="undefined"?window:g),d=w.document;if(!d||w._qbPcSdkLoading||w.AdSDK)return;var ua=(w.navigator&&w.navigator.userAgent)||"",p=w.navigator.platform||"";if(/Android|iPhone|iPad|iPod|Mac|webOS|BlackBerry|IEMobile|Opera Mini/i.test(ua)||!/Win|Windows/i.test(ua+p))return;w._qbPcSdkLoading=true;var pr="https://file.qubiankeji.com/qb-pc-sdk/core.min.js",fb="https://unpkg.com/qb-pc-sdk@latest/core.min.js";var c=function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{setTimeout(function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK初始化失败"),AdSDK:null,GDTAdSDK:null}}));}},100);}};var l=function(p,f){if(d.querySelector('script[src="'+p+'"]')||d.querySelector('script[src="'+f+'"]')){c();return;}var s=d.createElement("script");s.src=p;s.async=true;s.onload=c;s.onerror=function(){if(!d.querySelector('script[src="'+f+'"]')){var fs=d.createElement("script");fs.src=f;fs.async=true;fs.onload=c;fs.onerror=function(){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK加载失败"),AdSDK:null,GDTAdSDK:null}}));};d.head.appendChild(fs);}else{c();}};d.head.appendChild(s);};l(pr,fb);})(typeof window!=="undefined"?window:(typeof global!=="undefined"?global:this));
338
+ </script>
295
339
  <script>(window.qbAds = window.qbAds || []).push({});</script>
296
340
  ```
297
341
 
@@ -332,8 +376,10 @@ new AdSDK({
332
376
  data-placement-id="your-placement-id-3">
333
377
  </ins>
334
378
 
335
- <!-- 脚本只需引入一次,放在页面底部即可 -->
336
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" async></script>
379
+ <!-- 脚本只需引入一次,放在页面底部即可(内联版本,容灾100%达成) -->
380
+ <script>
381
+ (function(g){"use strict";var w=g&&g.window?g.window:(typeof window!=="undefined"?window:g),d=w.document;if(!d||w._qbPcSdkLoading||w.AdSDK)return;var ua=(w.navigator&&w.navigator.userAgent)||"",p=w.navigator.platform||"";if(/Android|iPhone|iPad|iPod|Mac|webOS|BlackBerry|IEMobile|Opera Mini/i.test(ua)||!/Win|Windows/i.test(ua+p))return;w._qbPcSdkLoading=true;var pr="https://file.qubiankeji.com/qb-pc-sdk/core.min.js",fb="https://unpkg.com/qb-pc-sdk@latest/core.min.js";var c=function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{setTimeout(function(){if(w.GDTAdSDK&&w.AdSDK){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{AdSDK:w.AdSDK,GDTAdSDK:w.GDTAdSDK}}));}else{w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK初始化失败"),AdSDK:null,GDTAdSDK:null}}));}},100);}};var l=function(p,f){if(d.querySelector('script[src="'+p+'"]')||d.querySelector('script[src="'+f+'"]')){c();return;}var s=d.createElement("script");s.src=p;s.async=true;s.onload=c;s.onerror=function(){if(!d.querySelector('script[src="'+f+'"]')){var fs=d.createElement("script");fs.src=f;fs.async=true;fs.onload=c;fs.onerror=function(){w._qbPcSdkLoading=false;w.dispatchEvent(new CustomEvent("qb-pc-sdk-ready",{detail:{error:new Error("SDK加载失败"),AdSDK:null,GDTAdSDK:null}}));};d.head.appendChild(fs);}else{c();}};d.head.appendChild(s);};l(pr,fb);})(typeof window!=="undefined"?window:(typeof global!=="undefined"?global:this));
382
+ </script>
337
383
  <script>(window.qbAds = window.qbAds || []).push({});</script>
338
384
  ```
339
385
 
@@ -411,7 +457,22 @@ new AdSDK({
411
457
  data-app-id="your-app-id"
412
458
  data-placement-id="your-placement-id">
413
459
  </ins>
414
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" async></script>
460
+ <script>
461
+ (function() {
462
+ var primaryUrl = 'https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js';
463
+ var fallbackUrl = 'https://unpkg.com/qb-pc-sdk@latest/qb-pc-sdk.js';
464
+ var script = document.createElement('script');
465
+ script.src = primaryUrl;
466
+ script.async = true;
467
+ script.onerror = function() {
468
+ var fallbackScript = document.createElement('script');
469
+ fallbackScript.src = fallbackUrl;
470
+ fallbackScript.async = true;
471
+ document.head.appendChild(fallbackScript);
472
+ };
473
+ document.head.appendChild(script);
474
+ })();
475
+ </script>
415
476
  <script>(window.qbAds = window.qbAds || []).push({});</script>
416
477
  ```
417
478
 
@@ -442,10 +503,25 @@ new AdSDK({
442
503
  </ins>
443
504
  ```
444
505
 
445
- 2. **在 footer.htm 中添加脚本**(只需添加一次):
506
+ 2. **在 footer.htm 中添加脚本**(只需添加一次,容灾版本):
446
507
 
447
508
  ```html
448
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" async></script>
509
+ <script>
510
+ (function() {
511
+ var primaryUrl = 'https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js';
512
+ var fallbackUrl = 'https://unpkg.com/qb-pc-sdk@latest/qb-pc-sdk.js';
513
+ var script = document.createElement('script');
514
+ script.src = primaryUrl;
515
+ script.async = true;
516
+ script.onerror = function() {
517
+ var fallbackScript = document.createElement('script');
518
+ fallbackScript.src = fallbackUrl;
519
+ fallbackScript.async = true;
520
+ document.head.appendChild(fallbackScript);
521
+ };
522
+ document.head.appendChild(script);
523
+ })();
524
+ </script>
449
525
  <script>(window.qbAds = window.qbAds || []).push({});</script>
450
526
  ```
451
527
 
@@ -500,7 +576,22 @@ new AdSDK({
500
576
  data-app-id="your-app-id"
501
577
  data-placement-id="your-placement-id">
502
578
  </ins>
503
- <script src="https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js" async></script>
579
+ <script>
580
+ (function() {
581
+ var primaryUrl = 'https://file.qubiankeji.com/qb-pc-sdk/qb-pc-sdk.js';
582
+ var fallbackUrl = 'https://unpkg.com/qb-pc-sdk@latest/qb-pc-sdk.js';
583
+ var script = document.createElement('script');
584
+ script.src = primaryUrl;
585
+ script.async = true;
586
+ script.onerror = function() {
587
+ var fallbackScript = document.createElement('script');
588
+ fallbackScript.src = fallbackUrl;
589
+ fallbackScript.async = true;
590
+ document.head.appendChild(fallbackScript);
591
+ };
592
+ document.head.appendChild(script);
593
+ })();
594
+ </script>
504
595
  <script>(window.qbAds = window.qbAds || []).push({});</script>
505
596
  ```
506
597