- buy-service/renew-minioffice 加长度检查 (pathElements.length >= 4/3) - 根因: Flutter web 深链接渐进式路径解析, onGenerateRoute 被调用多次, pathElements 递增 ([,buy-service] -> [,buy-service,1] -> 完整), 前几次路径短但 pathElements[1]已匹配 -> int.parse([2])/[3] 越界 - 直接访问/刷新 /buy-service/x/y, /renew-minioffice/x 时崩溃 - 恢复 buy_service 实验代码 (data 校验 + mounted 保留)
47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
"use strict";
|
|
|
|
|
|
|
|
// A map containing the URLs for the bootstrap scripts in debug.
|
|
let _scriptUrls = {
|
|
"mapper": "stack_trace_mapper.js",
|
|
"requireJs": "require.js"
|
|
};
|
|
|
|
// Create a TrustedTypes policy so we can attach Scripts...
|
|
let _ttPolicy;
|
|
if (window.trustedTypes) {
|
|
_ttPolicy = trustedTypes.createPolicy("flutter-tools-bootstrap", {
|
|
createScriptURL: (url) => {
|
|
let scriptUrl = _scriptUrls[url];
|
|
if (!scriptUrl) {
|
|
console.error("Unknown Flutter Web bootstrap resource!", url);
|
|
}
|
|
return scriptUrl;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Creates a TrustedScriptURL for a given `scriptName`.
|
|
// See `_scriptUrls` and `_ttPolicy` above.
|
|
function getTTScriptUrl(scriptName) {
|
|
let defaultUrl = _scriptUrls[scriptName];
|
|
return _ttPolicy ? _ttPolicy.createScriptURL(scriptName) : defaultUrl;
|
|
}
|
|
|
|
// Attach source mapping.
|
|
var mapperEl = document.createElement("script");
|
|
mapperEl.defer = true;
|
|
mapperEl.async = false;
|
|
mapperEl.src = getTTScriptUrl("mapper");
|
|
document.head.appendChild(mapperEl);
|
|
|
|
// Attach require JS.
|
|
var requireEl = document.createElement("script");
|
|
requireEl.defer = true;
|
|
requireEl.async = false;
|
|
requireEl.src = getTTScriptUrl("requireJs");
|
|
// This attribute tells require JS what to load as main (defined below).
|
|
requireEl.setAttribute("data-main", "main_module.bootstrap");
|
|
document.head.appendChild(requireEl);
|