const sydConvTranslation = { actionBarPlaceholder: '有问题尽管问我...', actionBarAriaLabel: '询问必应', actionBarComposeButton: '新主题', actionBarNewChatButtonDesktop: '开始新聊天', actionBarNewChatButtonMobile: '新建聊天', actionBarOngoingConvPlaceholder: '键入消息', captchaTitle: '验证身份', captchaDescription: '若要继续,请在下图中输入字符。', captchaPlaceholder: '输入字符...', captchaPlaceholderError: '抱歉,请重试。', next: '下一步', cancel: '取消', feedbackAccessed: '访问时间', feedbackSource: '源: 与必应的对话,', feedbackShareConversationQuery: '什么是新版必应?', messageLearnMore: '了解详细信息:', letsChat: '我们聊天吧', pause: '暂停', play: '开始游戏', speechFailedRecognitionError: '抱歉,我无法收听你的声音,因为语音服务器已关闭,请稍后再试。', speechListening: '我听着呢...', speechLoading: '正在等待音频...', speechMediaNotReachableError: '很抱歉,我无法收听你的声音,因为你没有可用的麦克风。', speechNoPermissionError: '你需要启用麦克风,我才能听到你的声音。', speechAudioPlaybackError: '出错了。', stop: '停止', welcomeContainerPrivacyStatement: '隐私声明', welcomeContainerUseTerms: '使用条款', welcomeMessageItemContent1: '我可以为我挑剔的只吃橙色食物的孩子做什么饭?', welcomeMessageItemContent2: '销量最高的 3 种宠物吸尘器有哪些优点和缺点?', welcomeMessageItemContent3: '以海盗的口吻写一首关于外太空鳄鱼的俳句', welcomeMessageItemTitle1: '🧐 提出复杂问题', welcomeMessageItemTitle2: '🙌获取更好的答案', welcomeMessageItemTitle3: '🎨 获得创意灵感', welcomeMessageItemLabel4: '更多创意中的新增功能:', warmWelcomeTitle: '欢迎使用新必应', welcomeSubtitleText: '由 AI 支持的网页版 Copilot', workToggleDescription: '以及你的结果包括哪些内容', feedbackFirstMessage: '非常抱歉没有帮助到你。是否可以详细说明你不喜欢的方面?', feedbackPromptMessage: '感谢提醒。请提供反馈,以便必应团队可以查看。', feedbackPromptGiveFeedback: '提供反馈', feedbackPromptGiveFeedbackAriaLabel: '提供反馈', feedbackPromptReportAConcern: '报告问题', feedbackPromptPositive: '很高兴你喜欢这个答案!', feedbackFormTitleText: '为什么这不起作用?', feedbackFormInputDefaultText: '在此处添加更多详细信息。为了帮助保护你的隐私,请不要填入你的姓名或电子邮件地址等个人信息。', feedbackFormLegalText: '是否有法律或政策问题?', feedbackFormReportAConcern: '报告问题', feedbackFormNotificationTitleText: '反馈已提交', feedbackFormNotificationBodyText: '感谢你帮助必应改进!', serpFeedbackFormTitleText: '请帮助我们改进体验', serpFeedbackFormInputDefaultText: '在此处输入反馈。为了帮助保护你的隐私,请不要填入你的姓名或电子邮件地址等个人信息。', serpFeedbackFormScreenshot: '包括此屏幕截图', submit: '提交', metaInternalSearchQuery: '正在搜索: `{0}`', metaInternalLoaderMessage: '正在为你生成答案...', compliantMetaInternalLoaderMessage: '从 {0} 生成安全答案', messageSharedContent: '共享内容', clickToView: '单击以查看', more: '更多', expand: '展开', welcomeTertiaryTitleText: '使用 AI 的强大功能从 Web 中查找答案、创建书面内容等。', actionBarTextInputAriaLabel: '询问必应', seeMore: '查看更多', seeLess: '查看更少', raiSuggestions: '这是什么?', actionBarStopStreamingAriaLabel: '停止流式传输', actionBarTextInputModeButtonAriaLabel: '文本输入模式', actionBarSpeechInputModeButtonAriaLabel: '启用语音输入模式', actionBarSubmitButtonAriaLabel: '提交', actionBarCancelSpeechInputButtonAriaLabel: '取消语音输入/读出', actionBarEditModeButtonAriaLabel: '编辑模式', actionBarSpeechBtnStartListeningAriaLabel: '开始聆听', actionBarSpeechBtnStopListeningAriaLabel: '停止侦听', actionBarSpeechBtnStopReadoutAriaLabel: '停止读出', feedbackLikeButtonAriaLabel: '点赞', feedbackDislikeButtonAriaLabel: '取消点赞', feedbackOffensiveButtonAriaLabel: '标记为冒犯性', feedbackCopyButtonAriaLabel: '复制', feedbackExportButtonAriaLabel: '导出', feedbackExportPdfButtonAriaLabel: 'PDF', feedbackExportTextButtonAriaLabel: 'Text', feedbackExportWordButtonAriaLabel: 'Word', feedbackShareButtonAriaLabel: '共享', messageSentAriaLabelPrefix: '已发送电子邮件', messageReceivedAriaLabelPrefix: '已收到消息', messageAttributionsCollapseBtnAriaLabel: '折叠', newTopicGreet1: '谢谢你帮我理清头绪! 我现在能帮你做什么?', newTopicGreet2: '谢谢你! 知道你什么时候准备好继续前进总是很有帮助的。我现在能为你回答什么问题?', newTopicGreet3: '重新开始总是很棒。问我任何问题!', newTopicGreet4: '当然,我很乐意重新开始。我现在可以为你提供哪些帮助?', newTopicGreet5: '好了,我已经为新的对话重置了我的大脑。你现在想聊些什么?', newTopicGreet6: '没问题,很高兴你喜欢上一次对话。让我们转到一个新主题。你想要了解有关哪些内容的详细信息?', newTopicGreet7: '当然,我已准备好进行新的挑战。我现在可以为你做什么?', newTopicGreet8: '好的,我已清理好板子,可以重新开始了。我可以帮助你探索什么?', newTopicGreet9: '明白了,我已经抹去了过去,专注于现在。我们现在应该探索什么?', newTopicGreet10: '很好,让我们来更改主题。你在想什么?', newTopicGreet11: '好了,我已经为新的对话擦拭干净板子了。现在我可以和你聊些什么呢?', newTopicGreet12: '不用担心,我很高兴尝试一些新内容。我现在可以为你回答什么问题?', newTopicSugg1: '教我一个新单词', newTopicSugg2: '如何设定可实现的目标?', newTopicSugg3: '教我有关登月的信息', newTopicSugg4: '世界上最小的哺乳动物是什么?', newTopicSugg5: '最深的海洋是哪个?', newTopicSugg6: '一年有多少小时?', newTopicSugg7: '我想学习一项新技能', newTopicSugg8: '让我大笑', newTopicSugg9: '有什么新闻?', newTopicSugg10: '给我看鼓舞人心的名言', newTopicSugg11: '给我说个笑话', newTopicSugg12: '我需要有关家庭作业的帮助', newTopicSugg13: '寻找非虚构作品', newTopicSugg14: '激励我!', newTopicSugg15: '向我显示食谱', newTopicSugg16: '如何创建预算?', newTopicSugg17: '教我一个新单词', newTopicSugg18: '天气如何?', newTopicSugg19: '我想学习一项新技能', newTopicSugg20: '宇宙是如何开始的?', newTopicSugg21: '为什么人类需要睡眠?', newTopicSugg22: '如何制作蛋糕?', newTopicSugg23: '火烈鸟为何为粉色?', newTopicSugg24: '全息影像的工作原理是什么?', newTopicSugg25: '金字塔是如何建成的?', newUserGreet: '你好,我是必应。我使用 AI 为你的问题寻找答案,帮助你撰写内容,并以各种风格解释事情。今天我能如何帮助你呢?', newUserSugg1: '写一首诗 ', newUserSugg2: '搜索视频', newUserSugg3: '创作歌曲', repeatUserGreet: '欢迎回来。很高兴再次见到你。我今天能为你提供哪些帮助?', repeatUserSugg1: '写一首诗', repeatUserSugg2: '谁创建了你?', repeatUserSugg3: '做个小测验', creativeGreet: '好吧!这就是创造力。我能帮什么忙?', balancedGreet: '听起来不错,我们可以在趣事和事实中寻找平衡。如何提供帮助?', preciseGreet: '感谢聊天。今天我能帮你吗?', creativeSugg1: '给雷雨写一封情书', creativeSugg2: '我可以为好友做些什么?', creativeSugg3: '告诉我的星座', balancedSugg1: '蜜蜂如何酿蜜?', balancedSugg2: '我需要帮助制定计划', balancedSugg3: '为我提供有关新爱好的想法', preciseSugg1: '谁发明语言?', preciseSugg2: '谁第一个发现南极洲?', preciseSugg3: '我需要帮助做研究', close: '关闭', newTopicPrompt: '通过新主题,可以开始与必应就任何主题进行全新对话', typingIndicatorStopRespondingAriaLabel: '停止响应', welcomeLearnSegment0: '必应由 AI 提供支持,因此可能出现意外和错误。请确保核对事实,并', welcomeLearnSegment1: '让我们一起学习。必应由 AI 提供支持,因此可能出现意外和错误。请确保核对事实,并 ', welcomeLearnSegment2: '共享反馈 ', welcomeLearnSegment3: '以便我们可以学习和改进!', actionBarSuspendConvPlaceHolder: '已为挂起的帐户禁用消息传递', notiReConnect: '出错了。', notiChatEnd: '聊天主题已结束。', notiRestartChat: '在 {0} 小时内开始新主题', notificationAttemptingToReconnect: 'Attempting to reconnect...', notificationProcessing: 'One moment while we try to connect', sydneySapphireCopyToClipboardText: '已复制到剪贴板。', sydneySapphireUpsellContent: '现在就获取使用新 AI 驱动的必应应用程序吧!', sydneySapphireWelcomeText: '欢迎回来! 下面是此页面的一些内容。', sydneySapphireConsentTitleText: '使用新必应提升浏览', sydneySapphireConsentMessageText: '允许 Microsoft 访问你的浏览器 Web 内容,以便使用 AI 生成的摘要和新必应的热点功能更好地个性化你的体验。了解更多信息', sydneySapphireConsentConfirmText: '确认', sydneySapphireConsentDenyText: '拒绝', typingIndicatorStopStreamingAriaLabel: '停止流式传输', sydneyCarouselCollapse: '折叠', sydneyCarouselTitle: '最近的聊天主题', messageActionsCopy: '复制', messageActionsCopying: '正在复制', messageActionsCopied: '已复制', messageActionsCopyError: '错误', messageActionsExportPdf: 'PDF', messageActionsExportText: 'Text', messageActionsExportWord: 'Word', messageActionsReport: '报告', tooltipPositive: '点赞', tooltipNegative: '取消点赞', tooltipShare: '共享', tooltipExport: '导出', tooltipMore: '更多', tooltipSendToPhone: '在手机上继续', mobileUpsellMessage1: '扫描此 QR 码以在移动必应应用上继续此对话', mobileUpsellTitle1: '在手机上继续', sydneySapphireUpsellConsentTitle: '是否继续从桌面聊天?', sydneySapphireUpsellConsentMessage: '你在其他设备上有一个活动的必应聊天。是否要继续此对话?', sydneySapphireUpsellConsentConfirm: '是', sydneySapphireUpsellConsentDeny: '不,谢谢', actionBarAutoSuggestTab: '选项卡', actionBarAutoSuggestTap: '点击', actionBarKeyboardHint: '输入', feedbackShareAnswer: '查看此必应答案', feedbackShareGenerated: '查看我使用必应生成的内容', feedbackShareTitleFormat: '{0} | {1}', serpfeedback: '反馈', shareConversation: '共享整个对话', speechAuthenticationError: '身份验证失败。请稍后重试。', speechUnknownError: '出错了。', refresh: '刷新', feedbackShareContent: '下面是我使用新的必应(全球首个 AI支持的应答引擎)生成的答案。单击可查看完整答案,然后请你也来试一试。', preview: '预览', toneSelectorDescription: '选择对话样式', toneSelectorCreative: '有创造力', toneSelectorCreativeModifier: '更多', toneSelectorBalanced: '平衡', toneSelectorBalancedModifier: '更多', toneSelectorPrecise: '精确', toneSelectorPreciseModifier: '更多', toneSelectorMoreCreative: 'More\\r\\nCreative', toneSelectorMoreBalanced: 'More\\r\\nBalanced', toneSelectorMorePrecise: 'More\\r\\nPrecise', notificationMaxTurnsPerDay: '很抱歉,你已达到可在 24 小时内发送到必应的邮件限制。请稍后回来查看!', notificationMaxTurnsPerConversation: '很抱歉,此对话已达到其限制。使用“扫除”按钮清除此内容并进行更多聊天。', notificationMaxTurnsForMuidUsers: '你已达到今天的对话限制。', notificationUnauthorizedMuidUsersCta: '登录以继续你的聊天。', notificationChatEnterMuidUsers: '登录以提出更多问题并进行更长的对话。', muidUsersTermsCond1: '通过单击“开始使用”,并继续与必应交互,即表示你接受', muidUsersTermsCond2: '并确认你已查看', muidUserGetStartedText: '开始使用', welcomeMobSugg1: '必应如何使用 AI?', welcomeMobSugg2: '必应还可以做什么?', welcomeMobSugg3: '科技领域的最新消息是什么?', of: '共', notificationResetConversation: '很抱歉,似乎出现错误。', notificationResetConversationCta: '让我们重新开始吧。', toneSelectorCreativeTooltip: '清除对话并开始原创和富有想象力的聊天', toneSelectorBalancedTooltip: '清除对话并开始一个信息丰富且友好的聊天', toneSelectorPreciseTooltip: '清除对话并开始简洁直截了当的聊天', toneSelectorSuppressedTooltip: '暂时不可用。请稍后再试!', notificationDisengaged: '也许该换个新话题了。', notificationDisengagedCta: '', notificationForbidden: '很抱歉,你似乎不再有权访问此功能。请几天后再次查看。', notificationTooManyRequests: '很抱歉,现在需求量非常大。请稍后重试。', notificationUnauthorized: '很抱歉,你似乎已注销。', notificationUnauthorizedCta: '请重新登录。', notificationMessageError: '上一条消息似乎已中断。', notificationSharedTip: '此对话\u003cstrong\u003e“{0}”\u003c/strong\u003e已于 {1} 与你共享', mmAnswerPrompt1: '我总算给你找到了一些东西! 看一看。', mmAnswerPrompt2: '我终于找到了一些东西! 这是你要找的吗?', mmAnswerPrompt3: '抱歉搞混了,我确实给你找到了一些东西。给你!', mmAnswerPrompt4: '嘿! 我确实找到了一些东西,这是你想要的吗?', mmAnswerPrompt5: '看! 我找到了一些适合你的内容。', mmAnswerPrompt6: '等等,在这里! 抱歉弄乱了,看一下吧。', mmAnswerPrompt7: '我找到你要的媒体了! 抱歉耽搁了。', signInCta: '登录 ', signInDescription: ' 以提出更多问题并进行更长的对话', exportSuccessToastTitle: '已导出文件。某些格式和图像可能无法导出。', exportedFileUserTitle: '用户', exportedFileBotTitle: '必应', copyCodeSuccessToastTitle: '已复制到剪贴板', copyCodeButtonTooltip: '复制', threadsSharedOnDate: '于 {0} 共享', threadsMore: '更多', threadsExportPanelTitle: '选择格式', threadsExportPanelAriaLabel: '选择', threadsCancel: '取消', threadsChatHistory: '聊天记录', threadsConfirm: '确认', threadsDaysAgo: '{0} 天前', threadsDefaultChatName: '无标题的聊天', threadsDelete: '删除', threadsDescription: '我们最近添加了自动保存聊天到由必应 AI 支持的 copilot。你的所有聊天都在桌面和移动设备上漫游,以便你可以轻松地从你离开的位置继续。', threadsDescriptionNote: '请注意,除非专门保存,否则所有聊天将在 90 天内自动删除。', threadsEdit: '重命名', threadsLoad: '加载聊天', threadsMinimizeRecent: '最小化最近的聊天', threadsMinimizeSaved: '最小化保存的聊天', threadsPreview: '预览', threadsPreviewText: '跳回最近聊天', threadsRecentTitle: '最近的活动', threadsSavedTitle: '已保存', threadsSeeAllRecent: '查看所有最近的聊天', threadsSeeAllSaved: '查看所有保存的聊天', threadsTitle: '聊天', threadsYesterday: '昨天', webPageContextPrefix: 'Site visited', zeroInputSuggestionFallback1: '哪款咖啡研磨机评价最好?', zeroInputSuggestionFallback2: '对于一个预算有限的六口之家来说,会首选哪三款车型?', zeroInputSuggestionFallback3: '写一个我的同事会觉得有趣的笑话', zeroInputSuggestionFallback4: '下一流行趋势是什么?我应该在哪里购物可以找到它?', zeroInputSuggestionFallback5: '撰写关于鱼和青蛙寻找爱的原创寓言故事', zeroInputSuggestionFallback6: '创建一个表,帮助我计划接下来两周的就餐', zeroInputSuggestionFallback7: '为具有讽刺风格的新社交媒体平台创建一个口号', zeroInputSuggestionCategory1: '商店', zeroInputSuggestionCategory2: '比较', zeroInputSuggestionCategory3: '大笑', zeroInputSuggestionCategory4: '聊天', zeroInputSuggestionCategory5: '写入', zeroInputSuggestionCategory6: '组织', zeroInputSuggestionCategory7: '创建', }; const toneSelectorTranslation = { description: '选择对话样式', notificationResetConversationCta: '让我们重新开始吧。', preview: '预览', }; let _cib; Object.defineProperty(window, 'CIB', { get() { return _cib; }, set(newValue) { Object.assign(newValue.config.features, { enableResponseToneSelector: true, enableResponseToneColorThemes: true, }); Object.assign(newValue.config.sydney, { responseToneOptions: ['Creative', 'Balanced', 'Precise'], }); newValue.vm.toneSelector.tone = 'Balanced'; Object.assign(newValue.config.strings, sydConvTranslation); Object.assign(newValue.vm.toneSelector.strings, toneSelectorTranslation); _cib = newValue; }, }); function getCookie(name) { const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); return v ? v[2] : null; } function setCookie(name, value, minutes = 0, path = '/', domain = '') { let cookie = name + '=' + value + ';path=' + path; if (domain) { cookie += ';domain=' + domain; } if (minutes > 0) { const d = new Date(); d.setTime(d.getTime() + minutes * 60 * 1000); cookie += ';expires=' + d.toUTCString(); } document.cookie = cookie; } async function registerSW() { if ('serviceWorker' in navigator && workbox) { const wb = new workbox.Workbox('sw.js'); wb.addEventListener('activated', (event) => { // console.log(`离线就绪 : `); // console.log(`activated : `, event); // console.log(`activated isUpdate : `, event.isUpdate); if (event.isUpdate) { // 更新 console.log(`sw 有更新,reload() `); wb.messageSkipWaiting(); window.location.reload(true); } }); wb.addEventListener('waiting', (event) => { console.log(`waiting : `, event); }); wb.addEventListener('externalwaiting', (event) => { console.log(`externalwaiting : `, event); }); const swRegistration = await wb.register({ immediate: false }); const swVersion = await wb.messageSW({ type: 'GET_VERSION' }); console.log('Service Worker Version:', swVersion); } } document.addEventListener('DOMContentLoaded', function () { registerSW(); // todo 反馈暂时无法使用,先移除 document .querySelector('cib-serp') .shadowRoot.querySelector('cib-conversation') .shadowRoot.querySelector('cib-welcome-container') .shadowRoot.querySelector('.learn-tog-item') .remove(); document.querySelector('cib-serp').shadowRoot.querySelector('cib-serp-feedback').remove(); // 移除顶部背景遮挡 document.querySelector('cib-serp').shadowRoot.querySelector('cib-conversation').shadowRoot.querySelector('.scroller > .top').style.display = 'none'; // 移除顶部边距 document.querySelector('cib-serp').shadowRoot.querySelector('cib-conversation').shadowRoot.querySelector('.scroller > .scroller-positioner > .content').style.paddingTop = 0; // 用户 cookie const userCookieName = '_U'; const userCookieVal = getCookie(userCookieName); const chatLoginBgEle = document.querySelector('.chat-login-bg'); if (!userCookieVal) { chatLoginBgEle.style.display = 'flex'; } else { document.querySelector('.chat-login-inp-cookie').value = userCookieVal; } document.querySelector('.chat-login-btn-save').onclick = function () { const cookie = document.querySelector('.chat-login-inp-cookie').value; if (cookie) { setCookie(userCookieName, cookie, 7 * 24 * 60); chatLoginBgEle.style.display = 'none'; } }; document.querySelector('.nav__title-setting').onclick = function () { chatLoginBgEle.style.display = 'flex'; }; });