发布更新后,我正在尝试为Chrome扩展程序的用户提供流畅的体验。
我在应用程序更新时重新注入了内容脚本,即使用户继续在扩展程序更新后未刷新的页面上继续使用我的扩展程序,我的功能也起作用。刷新页面是理想的选择,但是我不想强迫用户使用。
但是,在扩展程序更新之后,但在代码尝试从内容脚本/页面发送消息到后台页面时,在刷新页面之前,我的内容脚本控制台(将内容脚本插入的页面)中出现以下错误:
未捕获的错误:扩展上下文无效。
有办法“重建”连接吗?我尝试了长期使用的端口和常规消息传递-更新扩展具有相同的效果。
任何想法/方向表示赞赏。
这是我的简单消息传递代码(在内容脚本中),引发错误...但是可以与后台脚本进行通信:
chrome.runtime.sendMessage({ msg: "recordFeedback", obj: commentObj, source: source}, function(response){
console.log('Sent to DB...response was: ', response, response.recordFeedbackResponse);
});
Run Code Online (Sandbox Code Playgroud) 我有一个正常运行的 Chrome 扩展,我正在尝试添加 Firebase 身份验证(Google 和 Facebook)。
如果我从完整的浏览器窗口运行弹出窗口,我会得到与您期望的完全一样的 Google 和 Facebook 弹出窗口。
当我点击打开弹出窗口,然后选择 Google 或 Facebook 登录时,我会看到“关于:空白”弹出窗口(有时它保持打开状态,有时会闪烁并消失)。
最奇怪的事情: 如果我通过单击扩展图标打开弹出窗口,然后右键单击以公开开发工具并在弹出窗口上保持控制台打开,然后单击 Google 或 Facebook,弹出窗口将按您的预期打开,我可以登录。
下面的清单...我尝试匹配 Firebase 的详细示例(https://github.com/firebase/quickstart-js/tree/master/auth/chromextension)。
有任何解决问题的想法或指示吗?
{
"manifest_version": 2,
"name": "Annotate PRO for Chrome",
"short_name": "Annotate PRO",
"description": "Right-click access to a pre-written library of comments. Write it once, to perfection, and reuse forever!",
"version": "3.1.1.0",
"permissions": [
"identity",
"identity.email",
"clipboardWrite",
"clipboardRead",
"activeTab",
"tabs",
"contextMenus",
"storage",
"webNavigation"
],
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
"externally_connectable": {
"matches": ["http://*.11trees.com/*"]}, …
Run Code Online (Sandbox Code Playgroud) 我今天才意识到,我完全合法的Firebase后端发送的授权电子邮件被Microsoft Outlook的"高级威胁防护"标记为恶意
除了可能在开发期间被标记,因为我发送自己重复的确认电子邮件以测试功能,因此没有理由这样做.
此警告不会出现在常规的Hotmail/Outlook帐户中,但我是Office 365订阅者,因此看起来我很幸运能够获得这种"高级"保护,保护我免受我自己的完全非恶意网站的攻击.
我应该联系Microsoft或Firebase寻求解决方案吗?
非常感谢!
更新:我联系了Firebase支持并收到以下信息:
我的名字是来自Firebase支持的XXXX,感谢您与我们联系,Microsoft服务的问题,例如此"高级威胁防护"不属于我所在的领域或专业知识,我建议与Microsoft就此问题开一张票,我请注意Stack Overflow上已有一个主题,请务必查看其他Firebase社区渠道.
我知道这不是谷歌要解决的问题,但似乎任何使用电子邮件验证的Firebase应用程序都会遇到微软电子邮件系统的问题.这是很多企业和政府系统......
有关如何从谷歌或微软获得关注的任何建议吗?
outlook ms-office office365 firebase firebase-authentication
我希望我的 Chrome 扩展能够与包含一些简单 React 组件的页面进行交互 - 一个位于大量纯 javascript/html 中间的表格。
我的扩展不是用 React 构建的。
您可以通过 Chrome 扩展将什么脚本注入到页面中,以访问 React Elements(获取其键值等)?一个简单的例子将极大地帮助我......
这是我到目前为止所做的:
我可以注入脚本并附加到页面正文...但不确定如何“导入反应”或以其他方式利用页面上的 React 代码。
使用控制台中的 React 检查器,我可以看到一个以行作为子元素的元素。
我如何获得该元素的子元素?例如,他们的关键价值观是什么?
如果我注入以下脚本,我只会收到“意外标识符”错误:
import React from 'react';
import ReactDOM from 'react-dom';
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下内容的变体(在我注入的脚本中)...没有找到 React(我知道它在那里)...记录了“Inside FindReact function...1”消息,但没有其他内容(所以我知道我的脚本注入没有错误)。
console.log('In React script...run sub...');
reactSub();
function reactSub(){
console.log('Inside FindReact function...1');
window.FindReact = function(dom) {
for (var key in dom) {
console.log('Loooping...');
if (key.startsWith("__reactInternalInstance$")) {
var compInternals = dom[key]._currentElement;
var compWrapper = compInternals._owner;
var comp = compWrapper._instance;
console.log('Inside FindReact function...2') + console.log(comp);
return …
Run Code Online (Sandbox Code Playgroud) 如果我手动复制html表,则可以将其粘贴到保留格式(看起来像表)的Google文档中。
如何使用按钮以编程方式复制内容并将其粘贴为html表?类似于以下内容...
evar copydeck = $("<div>").html(htmlToInsert);
$('body').append(copydeck);
copydeck.select();
document.execCommand('copy');
copydeck.remove();
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用...但是这样做:
copydeck = $("<textarea>").val(this.list.join("\r\n"));
$('body').append(copydeck);
copydeck.select();
document.execCommand('copy');
copydeck.remove();
Run Code Online (Sandbox Code Playgroud)
我猜这是因为元素必须是可选的-就像输入或htmlarea字段一样。但是他们不能保存html(或者只是纯文本,而不是html)。
有什么办法复制和粘贴HTML?