// pdf-compatibility.js (function() { 'use strict'; // 修复 url.parse if (typeof window.URL === 'undefined' || typeof window.URL.parse !== 'function') { window.URL = window.URL || {}; window.URL.parse = function(url) { try { // 使用 DOM 方式解析 URL const a = document.createElement('a'); a.href = url; return { protocol: a.protocol, hostname: a.hostname, port: a.port, pathname: a.pathname, search: a.search, hash: a.hash, host: a.host, href: a.href, origin: a.origin }; } catch (e) { // 简单的字符串解析 const match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/); return { protocol: match[2] || '', hostname: match[4] || '', pathname: match[5] || '', search: match[6] || '', hash: match[8] || '', href: url }; } }; } // 修复 Promise.withResolvers if (typeof Promise.withResolvers !== 'function') { Promise.withResolvers = function() { var resolve, reject; var promise = new Promise(function(res, rej) { resolve = res; reject = rej; }); return { promise: promise, resolve: resolve, reject: reject }; }; } // 修复 Object.values if (typeof Object.values !== 'function') { Object.values = function(obj) { var values = []; for (var key in obj) { if (obj.hasOwnProperty(key)) { values.push(obj[key]); } } return values; }; } console.log('PDF 兼容性修复已加载'); })();