eoss-ui 0.7.91 → 0.7.92

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.
Files changed (67) hide show
  1. package/lib/button-group.js +45 -0
  2. package/lib/button.js +45 -0
  3. package/lib/calogin.js +45 -0
  4. package/lib/checkbox-group.js +45 -0
  5. package/lib/data-table-form.js +45 -0
  6. package/lib/data-table.js +57 -7
  7. package/lib/date-picker.js +45 -0
  8. package/lib/dialog.js +52 -11
  9. package/lib/eoss-ui.common.js +289 -174
  10. package/lib/flow-group.js +81 -12
  11. package/lib/flow-list.js +45 -0
  12. package/lib/flow.js +45 -0
  13. package/lib/form.js +45 -0
  14. package/lib/handle-user.js +45 -0
  15. package/lib/handler.js +45 -0
  16. package/lib/icon.js +45 -0
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +45 -0
  19. package/lib/input.js +45 -0
  20. package/lib/login.js +52 -6
  21. package/lib/main.js +160 -87
  22. package/lib/nav.js +45 -0
  23. package/lib/page.js +45 -0
  24. package/lib/pagination.js +48 -3
  25. package/lib/player.js +45 -0
  26. package/lib/qr-code.js +45 -0
  27. package/lib/radio-group.js +45 -0
  28. package/lib/retrial-auth.js +67 -6
  29. package/lib/select-ganged.js +45 -0
  30. package/lib/select.js +45 -0
  31. package/lib/selector-panel.js +45 -0
  32. package/lib/selector.js +45 -0
  33. package/lib/sizer.js +45 -0
  34. package/lib/steps.js +45 -0
  35. package/lib/switch.js +45 -0
  36. package/lib/table-form.js +45 -0
  37. package/lib/tabs.js +45 -0
  38. package/lib/tips.js +45 -0
  39. package/lib/tree-group.js +48 -3
  40. package/lib/tree.js +45 -0
  41. package/lib/upload.js +45 -0
  42. package/lib/utils/util.js +45 -0
  43. package/lib/wujie.js +45 -0
  44. package/lib/wxlogin.js +45 -0
  45. package/package.json +1 -1
  46. package/packages/.DS_Store +0 -0
  47. package/packages/data-table/src/main.vue +7 -3
  48. package/packages/dialog/.DS_Store +0 -0
  49. package/packages/dialog/src/main.vue +5 -11
  50. package/packages/flow/.DS_Store +0 -0
  51. package/packages/flow-group/src/main.vue +34 -12
  52. package/packages/flow-list/.DS_Store +0 -0
  53. package/packages/login/src/main.vue +2 -1
  54. package/packages/main/.DS_Store +0 -0
  55. package/packages/main/src/default/userinfo.vue +22 -14
  56. package/packages/main/src/main.vue +11 -12
  57. package/packages/main/src/simplicity/index.vue +19 -14
  58. package/packages/main/src/simplicity/userinfo.vue +18 -13
  59. package/packages/main/src/simplicityTop/index.vue +1 -1
  60. package/packages/main/src/simplicityTop/userinfo.vue +18 -13
  61. package/packages/pagination/src/main.vue +4 -4
  62. package/packages/retrial-auth/src/main.vue +23 -4
  63. package/packages/select/.DS_Store +0 -0
  64. package/packages/tree-group/src/main.vue +1 -2
  65. package/src/.DS_Store +0 -0
  66. package/src/index.js +1 -1
  67. package/src/utils/util.js +45 -0
package/lib/flow-group.js CHANGED
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,
@@ -4567,7 +4612,7 @@ module.exports = require("qs");
4567
4612
  // ESM COMPAT FLAG
4568
4613
  __webpack_require__.r(__webpack_exports__);
4569
4614
 
4570
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/flow-group/src/main.vue?vue&type=template&id=0192cc7c&
4615
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/flow-group/src/main.vue?vue&type=template&id=31ce53a2&
4571
4616
  var render = function () {
4572
4617
  var _vm = this
4573
4618
  var _h = _vm.$createElement
@@ -5834,7 +5879,7 @@ var staticRenderFns = []
5834
5879
  render._withStripped = true
5835
5880
 
5836
5881
 
5837
- // CONCATENATED MODULE: ./packages/flow-group/src/main.vue?vue&type=template&id=0192cc7c&
5882
+ // CONCATENATED MODULE: ./packages/flow-group/src/main.vue?vue&type=template&id=31ce53a2&
5838
5883
 
5839
5884
  // EXTERNAL MODULE: ./src/utils/util.js + 1 modules
5840
5885
  var util = __webpack_require__(0);
@@ -6510,13 +6555,25 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
6510
6555
  util["a" /* default */].busEmit(this, _extends({
6511
6556
  method: 'windowClose'
6512
6557
  }, JSON.parse(windowOpenConfig)));
6513
- util["a" /* default */].getWinTop().windowClose(JSON.parse(windowOpenConfig));
6558
+ try {
6559
+ var topWin = util["a" /* default */].getWinTop();
6560
+ topWin.windowClose(JSON.parse(windowOpenConfig));
6561
+ } catch (error) {
6562
+ console.warn('Failed to call windowClose:', error);
6563
+ }
6514
6564
  } else if (this.closeDialog && this.esDialog) {
6515
6565
  this.esDialog.handleClose();
6516
- } else if (util["a" /* default */].getWinTop().COOS_SDK) {
6517
- util["a" /* default */].getWinTop().COOS_SDK.closePopup && util["a" /* default */].getWinTop().COOS_SDK.closePopup();
6518
- } else if (util["a" /* default */].getWinTop().opener) {
6519
- util["a" /* default */].getWinTop().close();
6566
+ } else {
6567
+ try {
6568
+ var _topWin = util["a" /* default */].getWinTop();
6569
+ if (_topWin.COOS_SDK) {
6570
+ _topWin.COOS_SDK.closePopup && _topWin.COOS_SDK.closePopup();
6571
+ } else if (_topWin.opener) {
6572
+ _topWin.close();
6573
+ }
6574
+ } catch (error) {
6575
+ console.warn('Failed to close window/popup:', error);
6576
+ }
6520
6577
  }
6521
6578
  if (this.events && this.events.success) {
6522
6579
  this.events.success();
@@ -6529,13 +6586,25 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
6529
6586
  util["a" /* default */].busEmit(this, _extends({
6530
6587
  method: 'windowClose'
6531
6588
  }, JSON.parse(windowOpenConfig)));
6532
- util["a" /* default */].getWinTop().windowClose(JSON.parse(windowOpenConfig));
6589
+ try {
6590
+ var topWin = util["a" /* default */].getWinTop();
6591
+ topWin.windowClose(JSON.parse(windowOpenConfig));
6592
+ } catch (error) {
6593
+ console.warn('Failed to call windowClose:', error);
6594
+ }
6533
6595
  } else if (this.closeDialog && this.esDialog) {
6534
6596
  this.esDialog.handleClose();
6535
- } else if (util["a" /* default */].getWinTop().COOS_SDK) {
6536
- util["a" /* default */].getWinTop().COOS_SDK.closePopup && util["a" /* default */].getWinTop().COOS_SDK.closePopup();
6537
- } else if (util["a" /* default */].getWinTop().opener) {
6538
- util["a" /* default */].getWinTop().close();
6597
+ } else {
6598
+ try {
6599
+ var _topWin2 = util["a" /* default */].getWinTop();
6600
+ if (_topWin2.COOS_SDK) {
6601
+ _topWin2.COOS_SDK.closePopup && _topWin2.COOS_SDK.closePopup();
6602
+ } else if (_topWin2.opener) {
6603
+ _topWin2.close();
6604
+ }
6605
+ } catch (error) {
6606
+ console.warn('Failed to close window/popup:', error);
6607
+ }
6539
6608
  }
6540
6609
  this.events && this.events.save(id, event);
6541
6610
  this.$emit('save', id, event);
package/lib/flow-list.js CHANGED
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,
package/lib/flow.js CHANGED
@@ -2137,6 +2137,10 @@ var getWeekday = function getWeekday(date) {
2137
2137
  var getWinTop = function getWinTop(wind) {
2138
2138
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2139
2139
  try {
2140
+ // 检查是否已经是顶层窗口,避免无限递归
2141
+ if (wind === wind.parent) {
2142
+ return wind;
2143
+ }
2140
2144
  wind.parent.document;
2141
2145
  return getWinTop(wind.parent);
2142
2146
  } catch (error) {
@@ -2144,6 +2148,46 @@ var getWinTop = function getWinTop(wind) {
2144
2148
  }
2145
2149
  };
2146
2150
 
2151
+ /**
2152
+ * getWinTopProperty
2153
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2154
+ * @param {string} propertyName - 要获取的属性名
2155
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2156
+ * @return {any} 属性值或默认值
2157
+ **/
2158
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2159
+ // 1. 先尝试获取 window.top 的属性
2160
+ try {
2161
+ if (window.top && window.top[propertyName] !== undefined) {
2162
+ return window.top[propertyName];
2163
+ }
2164
+ } catch (topError) {}
2165
+ // window.top 跨域,继续尝试
2166
+
2167
+
2168
+ // 2. 尝试获取同源的最上层窗口的属性
2169
+ try {
2170
+ var sameOriginTop = getWinTop();
2171
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2172
+ return sameOriginTop[propertyName];
2173
+ }
2174
+ } catch (sameOriginError) {}
2175
+ // 同源最上层窗口获取失败,继续尝试
2176
+
2177
+
2178
+ // 3. 尝试获取当前窗口的属性
2179
+ try {
2180
+ if (window[propertyName] !== undefined) {
2181
+ return window[propertyName];
2182
+ }
2183
+ } catch (currentWinError) {}
2184
+ // 当前窗口获取失败,返回默认值
2185
+
2186
+
2187
+ // 4. 所有尝试都失败,返回默认值
2188
+ return defaultValue;
2189
+ };
2190
+
2147
2191
  /**
2148
2192
  * getZoom
2149
2193
  * @desc 获取缩放比
@@ -3889,6 +3933,7 @@ var winTopOpen = function winTopOpen(config) {
3889
3933
  getValues: getValues,
3890
3934
  getWeekday: getWeekday,
3891
3935
  getWinTop: getWinTop,
3936
+ getWinTopProperty: getWinTopProperty,
3892
3937
  handlerUrl: handlerUrl,
3893
3938
  hasChars: hasChars,
3894
3939
  hasClass: hasClass,
package/lib/form.js CHANGED
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,
package/lib/handler.js CHANGED
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,
package/lib/icon.js CHANGED
@@ -2138,6 +2138,10 @@ var getWeekday = function getWeekday(date) {
2138
2138
  var getWinTop = function getWinTop(wind) {
2139
2139
  wind = wind ? wind : window.__WUJIE_RAW_WINDOW__ ? window.__WUJIE_RAW_WINDOW__ : window;
2140
2140
  try {
2141
+ // 检查是否已经是顶层窗口,避免无限递归
2142
+ if (wind === wind.parent) {
2143
+ return wind;
2144
+ }
2141
2145
  wind.parent.document;
2142
2146
  return getWinTop(wind.parent);
2143
2147
  } catch (error) {
@@ -2145,6 +2149,46 @@ var getWinTop = function getWinTop(wind) {
2145
2149
  }
2146
2150
  };
2147
2151
 
2152
+ /**
2153
+ * getWinTopProperty
2154
+ * @desc 安全获取顶层窗口的属性,避免跨域访问错误
2155
+ * @param {string} propertyName - 要获取的属性名
2156
+ * @param {any} defaultValue - 默认值,当属性获取失败时返回
2157
+ * @return {any} 属性值或默认值
2158
+ **/
2159
+ var getWinTopProperty = function getWinTopProperty(propertyName, defaultValue) {
2160
+ // 1. 先尝试获取 window.top 的属性
2161
+ try {
2162
+ if (window.top && window.top[propertyName] !== undefined) {
2163
+ return window.top[propertyName];
2164
+ }
2165
+ } catch (topError) {}
2166
+ // window.top 跨域,继续尝试
2167
+
2168
+
2169
+ // 2. 尝试获取同源的最上层窗口的属性
2170
+ try {
2171
+ var sameOriginTop = getWinTop();
2172
+ if (sameOriginTop && sameOriginTop[propertyName] !== undefined) {
2173
+ return sameOriginTop[propertyName];
2174
+ }
2175
+ } catch (sameOriginError) {}
2176
+ // 同源最上层窗口获取失败,继续尝试
2177
+
2178
+
2179
+ // 3. 尝试获取当前窗口的属性
2180
+ try {
2181
+ if (window[propertyName] !== undefined) {
2182
+ return window[propertyName];
2183
+ }
2184
+ } catch (currentWinError) {}
2185
+ // 当前窗口获取失败,返回默认值
2186
+
2187
+
2188
+ // 4. 所有尝试都失败,返回默认值
2189
+ return defaultValue;
2190
+ };
2191
+
2148
2192
  /**
2149
2193
  * getZoom
2150
2194
  * @desc 获取缩放比
@@ -3890,6 +3934,7 @@ var winTopOpen = function winTopOpen(config) {
3890
3934
  getValues: getValues,
3891
3935
  getWeekday: getWeekday,
3892
3936
  getWinTop: getWinTop,
3937
+ getWinTopProperty: getWinTopProperty,
3893
3938
  handlerUrl: handlerUrl,
3894
3939
  hasChars: hasChars,
3895
3940
  hasClass: hasClass,