我正在尝试使用本机消息传递将一些数据发送到我的本机Windows应用程序.它可以与Runtime.sendnativemessage()方法合作.当我尝试使用长期使用端口的长期连接时,它也可以将数据从Chrome传递给我的应用.但是,Chrome Extension只能从我的应用程序中收到第一个响应.我确信该端口仍然打开,因为我的应用程序仍然可以从Chrome接收数据.以下是我的代码: Chrome扩展脚本: var port = chrome.runtime.connectNative('com.mydomain.app1'); port.onMessage.addListener(function(msg) { console.log("Received from port:", msg); }); port.onDisconnect.addListener(function() { console.log("Disconnected"); });
以下是关于 google-chrome-extension 的编程技术问答
我遵循本机消息传递文档 ,但我的能力是最好的,但是似乎无法让我的本机.NET应用程序甚至开始在Windows上运行.在寻找其他信息时,我注意到有些事情不明显且不清楚. 首先,该文档没有提及添加" nativemessaging" 权限的要求.更改后,我进一步了. Chrome实际上提到了"新的背景应用程序"现在在气球弹出窗口中添加的"新背景应用". 但是,无论我尝试过什么事情,以下代码都会立即断开连接. var port = chrome.runtime.connectNative( ... ); port.onDisconnect.addListener( function() { console.log( "Disconnected" ); } ); 根据我尝试调试此事的尝试,我有几个问题: 在Windows上,Chrome何时尝试加载注册表中Nativemessaging Hosts中的清单?,换句话说,当我更改值
我使用了示例项目 https://develover.chrome.chrome.com/extensions/samples/samples 我能够运行Python本机应用程序. 是否有任何方法可以在本机-Messaging-example-host.bat 中获取消息 我不想加载python脚本 我想在这里做的是 从chrome {text:" xyz.bat"} 发送消息 批处理文件应运行启动xyz.bat 解决方案 您不应该从批处理文件的角度来解决此问题,就像我的解决方案一样,它要求该程序进行预先运行,在大多数应用中,该程序都会贬值以支持在后台运行它. 但是,如果您仍然想知道如何在批处理... 如果您可以将消息传递到空白的HTML页面(当前不确定您如何或想以这种方式执行此操作),在此html页面上唯一的东西是您的,我们可以运行一个程序复制页面,打开文本文件并在内部粘贴,关闭文本文件,然后从其输入中运行批处理.因此,代码明智, @if (@C
我进行了一个Chrome扩展名,并希望将其安装作为使用Windows注册表的软件安装设置的一部分进行.它安装了Chrome的扩展名,但处于残疾状态.扩展名在Chrome中的安装扩展名列表中列出://扩展名.如何使用代码启用扩展名(无需最终用户干预).我不希望用户手动启用它. 解决方案 由于Chrome Security警察(Chrome 25之后),您无法直接启用Chrome Extension. . 使用外部扩展部署选项安装的第三方程序安装的扩展名将为禁用默认情况下.当第三方程序安装扩展程序时,Chrome菜单将被标记,用户可以单击Chrome菜单以查看包含启用扩展名或从其计算机中删除的选项的对话框. 此外,先前使用外部部署选项安装的所有扩展名将自动禁用. Chrome将显示一次性提示,以允许任何扩展名的重新增强. 但是您可以使用内联安装,但是您需要将扩展名上传到Chrome Web Store中并直接向用户询问. 有关更多信息,请检查下面的链接:
我刚刚在 trunk/dev 频道: type ( enumerated string ["normal", "popup", "panel", "app", "shell"] ) 浏览器窗口的类型是 我用金丝雀(Canary)尝试了它:没有显示窗口,但是我们有控制台输出,因此已经创建了一些东西.事情是我只是不明白.这与背景页面有何不同? 我希望将窗口完全从用户的视图中切换出来,而无需在切换时重新加载窗口的内容.无论如何,我不希望使用Chrome.windows.update更新窗口类型.但是问题仍然存在:这种"外壳"类型是什么? 解决方案 " shell"移至新 chrome.app.window api in Dev Documentation . 其他解决方案 " shell"当前无能为力,不应使用.
他们是通过Chromes浏览器设置将所有页面保存在一个窗口中的所有页面的一种方式?或我可以使用的插件/插件? 我不希望当我单击某些链接时在新标签和/或新窗口中打开网页. 让我知道是否有人有任何建议!,谢谢! Opens a New Tab! Thtats not what i want..., I want this link to stay in same url bar.
Like this!
Click Here 解决方案 可能的方法: 一种方法可能是构建一个扩展名,该扩展名注入 content Script /strong>在每个页面中.此内容脚本将解析DOM和删
我注意到有一些应用程序可以使用Chrome扩展名使任务栏闪烁的窗口?类似于Chrome在下载某些内容时如何显示绿色进度栏,其他Windows会闪烁橙色以引起您的注意.无论如何,是否有镀铬扩展名? 解决方案 是的,有可能与 windows api : drawAttention 如果为true,则导致窗口以一种将用户注意到窗口的方式显示,而无需更改集中的窗口.效果会持续到用户更改焦点上的窗口为止.如果窗口已经具有焦点,则此选项无效.设置为false以取消先前的注意请求. // You can pass -2 as windowId for the current window, // or query tabs/windows to get the one you want chrome.windows.update(windowId, {drawAttention: true});
我有一个Windows桌面应用程序,必须与Chrome扩展程序合作使用. 我可以从Google Chrome扩展名中以某种方式向我的桌面应用发送消息吗? 我可以使用哪些IPC对象? 解决方案 我看到了三个选项: 您可以使用互联网.您可以拥有Chrome扩展名和桌面应用程序交谈的远程服务,以进行交流. 您可以让您的桌面应用程序内置了一个简单的服务器,以便Chrome扩展名可以向其发出本地HTTP请求以与之通信. 使用Google npapi插件功能可以完全访问计算机. 其他解决方案 这些天,您将使用Chrome的本机消息API将消息从扩展程序发送到本机消息主机.后者可以是"真实的"可执行文件,然后将消息传递到您的桌面应用程序. 文档:本地 - 梅斯纳斯 - 主持人 其他解决方案 Chrome扩展名具有native massage api可以与本机过程通信, 请参阅此处: https://develoveler.chrome.chr
我正在尝试使持续的存储与wasm sqlite一起工作. 我在后台的代码.JS文件是此 const worker = new Worker('./worker.js'); worker.postMessage({ loadSQLite: true }); ,但它永远不会超越工人的一部分.我会收到以下错误. Uncaught ReferenceError: Worker is not defined 因此,在进行了一些研究之后,我尝试了一些可能的解决方案.有些人说您不能在工人中产生工人,并且有一个次级工作人员的解决方案,但这对我不起作用(如果对您有用,请告诉我,但我无法做到这一点). worker.js中的代码我认为并不重要,但是我会在那里发布我要做的事情. worker.js import sqlite3InitModule from './lib/@sqlite.org/sqlite-wasm/index.mjs'; const log = (.
我在这里要实现的目标是在工人身上执行XHRHttpRequest()以加速我的扩展.我正在使用worker_proxy.js 清单 { "permissions": [ "alarms", "activeTab", "tabs", "webNavigation", "http://*/*", "https://*/*", "cookies" ], "options_page": "options.html", "background": { "persistent": false, "scripts": [ "worker_proxy.js","background.js"] }, "content_scripts": [ { "matches": ["https://*/*","http://*/*"], "js": ["
i具有一个包括复杂函数comp_func(data)的Chrome扩展名,该功能通过执行许多位操作而需要大量CPU.因此,我正在尝试使用WebAssembly. 我尝试关注几个教程,例如一个和 this ONE 第一个链接说: fetch('simple.wasm').then(response => response.arrayBuffer() ).then(bytes => WebAssembly.instantiate(bytes, importObject) ).then(results => { results.instance.exports.exported_func(); }); 但是我有一个错误: uck offult(在承诺中)typeError:webAssembly实例:导入#0模块=" env"错误:模块不是对象或函数 我已经尝试了很多方法来使用这种方法,但是它没有用.我不明白如何使用从.wasm文件加载的WebAs
有什么办法可以访问chrome. 如果我将chrome.thistory或Chrome对象带入postMessage,则由于转换误差为Transferable类型. 我可以从扩展中成功查询历史记录并通过结果,但是我想将繁重的举重留给工人而不是主线程,然后通过结果. 解决方案 网络工人本来应该是轻量级的,并且不继承任何权限(甚至没有主机权限)(此外,chrome甚至在Web Worker中都没有定义). 如果您对chrome.history api的结果进行了非常沉重的事情,那么您可以将回调的结果传递给工人进行处理(带有转移物,开销很小).在执行此操作之前,请确保您要介绍性能影响是否真的很重要,以保证实施此类事情.
我正在尝试从扩展程序的内容脚本中创建一个Web Worker,但是它被SecurityError(相同的原始策略)所阻挡.最好的方法是什么? 来自我的内容脚本: var workerURL = chrome.extension.getURL("js/searchWorker.js"); var lunrWorker = new Worker(workerURL); 从清单中: "content_scripts": [ { "matches": ["http://localhost:8000/*"], "js": ["js/jquery.min.js", "js/jquery.highlight.js", "js/index.js"], "css": ["css/bootstrap.css", "css/styles.css"] } ] 我也尝试在清单中设置此功能,但没有帮助: "content_security_
我有一些有关网络工作者的问题 工人是否可以访问存储?,例如. indexeddb/webql和文件的本地存储该工人是从? 启动的 如何将文件包含在工人中?我有一个functions.js具有很多快速应用相关的功能,并且在将文件的内容复制在一个工人只有两个不同的地方更新我的功能. 我可以在工人内有一个dom吗?不访问父页面的DOM,而是在工人本身中具有DOM. 如果任何问题的答案是负面的,那么如何/应该/应该手动完成? 这是用于Chrome应用程序的,因此我可以访问最新的Chrome API,而我不需要关心向后兼容性. 解决方案 Web Worker期间没有任何形式的DOM访问.所有DOM操作都必须从主JS线程中完成.网络工作者只能通过消息传递与主线程进行通信. 这个上一个问题告诉您,网络工作者无法访问本地存储,通过Google搜索很容易找到. 同一线程具有网络工作者可以访问的列表. 目前尚不清楚您的意思是"在工人中包含文件".您可
我现在正在开发Google Chrome打包应用程序. 我将使用WebView标签来嵌入我正在处理的该应用程序的网页. 我正在阅读下面描述WebView标签的文档. /p> 但是,我不太了解这是用来的. 任何人都可以解释哪种分区属性? 谢谢! WebView标签使用的存储分区ID.如果存储分区 id以持久性开头:( partition =" persist:googlepluswidgets"), WebView将使用所有可用的持久存储分区 具有相同存储分区ID的应用程序中的客人.如果ID为 未设置或没有"持久":前缀,WebView将使用 内存存储分区.此值只能在之前修改 第一个导航,自活
我正在开发一个Chrome应用程序,该应用在WebView标签中显示一些Web内容.内容正在缓存.当我编辑内容文件时,清除Chrome浏览器的缓存似乎实际上并没有清除WebView Cache. 每次Chrome应用程序启动时,其中一篇文章建议分配一个唯一的分区ID. 更改WebView上的分区ID确实有助于清除(或重新分配)缓存,但是我仍然想利用缓存3MB的Web内容,并仅在更改时手动清除它. 有没有办法清除缓存,特别是在Chrome OS上? 解决方案 此后一直是已实现可在Chrome 43+ 中使用 webviewElement.clearData({}, {cache: true}, function() { // Cache cleared });
我正在构建Google应用>(不是扩展名,而是 app )带有gmail,日历等. 我想在我的应用程序中从常规铬中运行扩展.例如,Rapportive是Gmail的绝佳扩展.但是,似乎扩展名没有在webview中托管的页面上运行. 有人知道如何在Chrome应用中启用扩展吗? 解决方案 Chrome应用程序中的扩展名无法通过设计提供. WebView旨在促进显示基于Web的内容 you Control,在这种情况下,您将能够在服务器上更改该内容,而不是依靠扩展程序来进行. 顺便说一句,您应该记下适用的服务条款不允许您发布您在Chrome Web商店中描述的应用程序:"请勿在主要功能链接到开发人员拥有的网站的位置." ."
我正在构建用打字稿编写的Chrome扩展名.我正在使用但是,当我在打字稿代码中写这篇文章时: chrome.extension.getURL 我有一个错误:cannot find name 'chrome'. 因此,我的JavaScript文件未生成,我无法在扩展中使用它. 有解决方案吗? 解决方案 应该可以正常工作:提示:确保添加了reference标签: /// 其他解决方案 与打字稿2(或2.x,不确定),您应该从@Types导入Google Chrome类型. 在 package.json : "devDependencies": { ... "@types/chrome": "0.0.35", // Or just npm install --save-dev @types/chrome 和 tsconfig :