本地信息传递,重:关闭后重新建立与主机应用程序的连接
我有一个功能的扩展名,可以与本机主机C#应用通信.在我关闭并重新打开后,寻找一种方法来自动重新建立与C#应用程序的连接.任何帮助都非常感谢. 解决方案 本机消息传递意味着只有Chrome在"连接"时可以启动它.这是一个错误的名称,因为connect()意思是"启动新副本并与之交谈". 无法将其"附加"到已经运行的过程中.如果关闭主机,则stdio管道损坏了Port对象fires onDisconnect事件.然后,您需要从扩展名中重新启动主机才能与之交谈. 其他解决方案 询问服务器是否仍在这里(即每30秒一次) 如果您没有得到一定的延迟(=>超时)删除连接并创建新连接的答案. 延迟不得太快,以避免在只有"滞后尖峰" 时避免重置连接
4 2024-04-26
编程技术问答社区
在网页右侧添加侧边栏,可调整大小并相应移动所有内容
我正在创建一个Chrome扩展名,该扩展应在所有网页中添加侧边栏. 该侧边栏不应重叠网页内容,应将其放在现有内容旁边,从本质上将网页的主体宽度缩小到initial width - sidebar width. . 这是我想到的代码,但是我在某些页面(例如stackoverflow)中有一个问题,请参见顶级栏如何不像页面的其余部分那样缩小(代码下方附加了屏幕截图) // create sidebar const sidebar = document.createElement("iframe"); sidebar.src = chrome.extension.getURL("iframe/iframe.html"); sidebar.id = "extensionSidebar"; sidebar.frameBorder = "0"; sidebar.style.height = "1
22 2024-04-22
编程技术问答社区
Chrome 浏览器的富进度通知状态不会上移
我尝试使Chrome Progress富含通知,但状态栏不会移动. 我认为此代码会起作用.状态栏每40ms每40ms上升1%.通知在4秒后消失(恰好也是100%).我认为我的setInterval 有问题 var notifyStatus = function(title, message) { var k = 0; chrome.notifications.create('', { 'type': 'progress', 'iconUrl': 'images/icon128.png', 'title': title, 'message': message || '', 'progress': setInterval(function() { if (k>100) {k;} else {k++;} },40) }, function(nid) { // Automati
如何使Chrome本地消息传递收听应用程序?
因此,我有一个与C#一起使用的Chrome本机消息传递的工作示例,并且非常适合将其发送到应用程序,然后返回响应.不过,我真正需要做的是能够调用我的本机应用程序并将信息发送到Chrome扩展名(加载网站URL). 问题是,当我用参数调用我的EXE(控制台应用程序)时,Chrome不听.当我首先听铬时,它启动了我的应用程序,我无法再将其发送命令,如果我再次启动它,chrome却没有连接到该命令,所以什么也不会发生. 理想情况下,我想打电话给我的应用程序: nativeapplication.exe viewAccount ABCDEFG 让我的扩展名正在侦听它的viewAccount方法,该方法的参数ABCDEFG. 我可以从chrome -> application -> chrome中工作,但是我想去other application (or command line with arguments) -> application -> chrome.
26 2024-04-20
编程技术问答社区
从Chrome扩展程序向主机传递 "大量 "数据的速度非常慢(用C#写的)
我正在使用Chrome的 我的主要问题:为什么将250KB -350KB消息从扩展传递到主机需要这么长时间? 根据开发人员的网站: Chrome在单独的过程中启动每个本机消息传递主机,并使用标准输入(STDIN)和标准输出(STDOUT)与IT进行通信.相同的格式用于以两个方向发送消息:使用JSON,UTF-8编码序列化每个消息,并在本机字节顺序上以32位消息长度进行序列化.来自本机消息主机的一条消息的最大大小为1 MB,主要是为了保护铬避免行为不当. 发送给本机消息主机的消息的最大大小为4 GB. 我有兴趣发送给主机的DOM的页面不超过260KB(偶尔300KB),远低于4GB的最大值. popup.js document.addEventListener('DOMContentLoaded', function() { var downloadButton = document.getElementById('download_button');
4 2024-04-12
编程技术问答社区
本机信息传递 Chrome
我试图在我的Chrome扩展名和C#应用程序之间获得本地消息传递. JavaScript工作正常,但是我遇到了这个错误: 与本机消息主机通信时错误. 正如我从任务管理器所看到的那样,该应用程序的确与扩展程序一起启动. 这是我的C#代码. private static string OpenStandardStreamIn() { //// We need to read first 4 bytes for length information Stream stdin = Console.OpenStandardInput(); int length = 0; byte[] bytes = new byte[4]; stdin.Read(bytes, 0, 4); length = System.BitConverter.ToInt32(bytes, 0); string input = ""; for
无法在点击按钮时调用html中的JavaScript函数
我正在制作一个Chrome扩展程序,为此我有一个HTML文件,一个JavaScript文件,该文件在新选项卡中打开一个修改的链接,清单文件和图标. 它可以正常工作,但是现在我希望JavaScript函数仅在用户单击按钮时工作.因此,我在HTML文件中制作了一个按钮,将JS代码放入函数中,然后使用onclick. 调用该函数 但是由于某种原因,它行不通.单击按钮时,似乎什么都没有发生.我尝试重新加载扩展名.另外,我以一个简单程序的工作示例进行了工作示例,其中单击按钮时,使用alert(). 显示一个简单的" Hello World"消息. 直接在Chrome中打开HTML页面时,这正常工作,但是当我用所做的功能替换它时,单击时似乎没有任何事情发生. 有人可以找到错误/问题吗? urltry.html文件是: View Editorial
4 2024-04-05
编程技术问答社区
如何让一个Chrome扩展程序在页面加载时自动点击一个按钮?
我正在尝试创建一个Google Chrome扩展程序,该扩展按页面加载上的按钮.我能够使用此代码使用VBScript for Internet Explorer触发按钮: IE.Navigate("javascript:changeIframe();") 但是,现在我需要通过扩展名在Google Chrome中进行操作.但是,该按钮没有ID: 这是我到目前为止尝试过的,似乎没有任何作用: window.onload="javascript:changeIframe()"; javascript:changeIframe(); document.getElementById('').click(); document.getElementById('').submit(); 看来.click和.submit在Goo
6 2024-04-05
编程技术问答社区
Chrome扩展弹出窗口不工作,点击事件未被处理
我创建了一个JavaScript变量,当我单击按钮时,它应该增加1个,但它不会发生. 这是manifest.json. { "name":"Facebook", "version":"1.0", "description":"My Facebook Profile", "manifest_version":2, "browser_action":{ "default_icon":"google-plus-red-128.png", "default_popup":"hello.html" } } 这是HTML页面的代码 var a=0; function count() { a++; document.getElementById("demo").innerHTML=a; return a; }
不能用Chrome的历史API删除URL
我正在使用document.addEventListener('DOMContentLoaded', function() { var form = document.getElementById('form'), query = document.getElementById('query') form.onsubmit = function(e) { e.preventDefault() // alert(chrome.history) // [object Object] // alert(chrome.history.deleteUrl) // function () { [native code] } // alert(query.value) // whatever I typed chrome.history.deleteUrl(query.value) } query.focus() }) (form是我的弹出窗口中的形式,query是您可以输入的文本框.)
4 2024-04-04
编程技术问答社区
Chrome.history.getVisits返回空集,即使项目存在于Chrome.history.search中。
我想收集我过去的n个历史记录项目,然后找到我访问该页面的所有时间戳记,就我的Chrome历史所包含的时间. chrome.history.search允许我获取我上一个n个历史记录项目的URL. 但是,如果我现在称为chrome.history.getvisits上的每个URL,则有些返回'[]',即使它们存在于我的历史中.此外,即使getVisits呼叫返回[],在Chrome中搜索Chrome://历史记录也正确返回项目. 另外一个花絮,这似乎是一个问题.我的前50个左右都返回适当的[对象],但是在那之后,几乎所有(看起来90%+)都是空集[]. 下图显示了API调用返回[],而历史记录正确显示了结果. 解决方案 通过查看a扩展样品在这里,修复程序是如下.您需要闭合将URL绑定到回调的args(Chrome.history.getVisits()函数的回调)才能使其正常工作. 在 function loadUrlVisits(url){
2 2024-04-04
编程技术问答社区
使用chrome.history.deleteRange不能完全删除历史记录
我写了一个小型扩展程序,该扩展名在chrome.history api中使用deleteRange,以删除浏览器历史记录之间的启动时间和结束时间戳记. chrome.history.deleteRange({ startTime : startTime, endTime : endTime }, function() { console.log("Recent history deleted successfully"); }); 我使用startTime和endTime使用(new Date()).getTime(). 它"有点工作".如果我在启动扩展程序后第一次在Chrome中打开页面,我将能够在Omnibox中使用其URL而不完全键入它(对我来说,Chrome记得Chrome在其历史记录中记得URL).打电话deleteRange后,我不再能够这样做.我还在控制台上看到文本Recent history deleted successfully.这对
4 2024-04-04
编程技术问答社区
当页面被改变时,如何通过history.pushState在google chrome扩展中插入内容脚本?
我正在为网站创建一个小型的Google Chrome扩展名,我想更改特定页面的HTML. 问题在于网站通过Ajax加载他的内容,并大量使用历史记录. 所以,我添加了这个东西以表现出来: "content_scripts": [ { "matches": ["http://vk.com/friends"], "js": ["js/lib/jquery.min.js", "js/friends.js"], }, ] 首次打开页面或重新加载它时,一切正常. 但是,当我在网站页面之间导航时,Chrome不会在"/朋友"页面上插入我的脚本.我认为这是因为URL实际上没有改变.他们使用history.pushstate(),因此,Chrome无法再次插入/重新运行我的脚本. 有什么解决方案吗? 解决方案 您可以添加 window内容脚本中的事件并聆听它,当事件发生时,您可以再次重新运行内容脚本. 参考 a) ex
2 2024-04-04
编程技术问答社区
如何使用Chrome扩展中的历史API获取浏览历史记录
我如何使用Chrome API获取最近访问的选项卡的URL,特别是访问的最后10个URL? 解决方案 将一个空字符串作为查询传递到 search()chrome.history api .例如,这将将最近访问的10个URL记录到控制台: chrome.history.search({text: '', maxResults: 10}, function(data) { data.forEach(function(page) { console.log(page.url); }); }); 其他解决方案 您必须放置: "permissions": [ "history" ], 在您的清单中.扩展名的json文件,然后您的代码看起来像这样: chrome.history.search({ 'text': '', // Return every history item...
22 2024-04-04
编程技术问答社区
chrome在离线模式下/打开缓存的网站?
我有一个特殊的售货亭解决方案,我需要Chrome需要Chrome才能在启动启动时,加载CACHE的启动URL,而不是尝试在线获取. 原因是,就像我说的那样,这是一个售货亭模式演示文稿,是一个屏幕,每天晚上都在公众中重新启动,如果重新启动在ISP在Internet上的停机时间发生,Chrome将会仅显示一个错误页面. 如果我可以将其加载到页面的缓存版本,而不是尝试在线获取它,那么该页面的最后一个有效版本将显示,并且通过我的一些nifty ajax-workings;)一段时间后自动更新.如果该更新失败,则目前显示的页面版本将保留在后续更新成功之前. 看到我的问题? 在像Firefox这样的浏览器中,我可以通过以离线模式启动浏览器,然后在页面加载后将其切换到在线模式.在特定项目中,只有FF对我不起作用,而Chrome似乎没有离线模式? 解决方案 您可以使用 html5离线Web应用程序来实现这一目标.在您的情况下设置可能非常容易,只需在您的应用程序目录中添加以
6 2024-04-04
编程技术问答社区
Chrome插件读取硬盘上的文本文件并替换文本框内容
我正在做很多工作,我使用崇高的代码,然后需要将内容复制到真正糟糕的基于Web的"编辑器"中.我希望此文本框/编辑器的内容自动填充我选择的文本文件的内容. 我不控制要复制代码的网页,因此不能注入小程序或类似的网页. 我希望做的是创建一个插件(我正在使用chrome),可以选择一个元素作为目标,在硬盘驱动器上选择一个文本文件(或者也许是指向URL的内容Local主机(如果更容易)并进行更改的插件扫描. 关于如何解决这个问题的想法?也许已经做了类似的事情?我谷歌搜索了,但似乎找不到正确的术语. 解决方案 在扩展中获取本地文件的内容的最简单方法可能是通过XMLHttpRequest.例如,以下背景脚本获取/etc/passwd的内容,并将其打印到背景控制台: function pollContent() { var x = new XMLHttpRequest(); x.open('GET', 'file:///etc/passwd');
8 2024-04-04
编程技术问答社区
我可以从Chrome插件中执行一个本地程序吗?
我想制作一个Chrome插件,以检查客户端系统上是否存在 mencoder.exe .如果是这样,请转换文件. 可能吗? 如果没有,我可以在Java小程序中做类似的事情吗?我愿意提出建议! 解决方案 Java applet是可能的,但是您还需要在程序中实施权限策略.这是两个教程,您应该查看: java applet: 实施策略: 其他解决方案 您可以使用Java applet(就像Laerte所说的那样)进行操作,但是实施策略不是唯一的选择.可能是更容易的数字签名()您的applet在subest.mf中具有各自属性(在这里和在这里)并包装您因此,使用
20 2024-04-04
编程技术问答社区
Chrome-禁用ctrl+t快捷键
我们正在使用chrome 35.0通过kiosk mode用于客户浏览的特定URL. Chrome.exe --kiosk ,但看起来任何人都可以在带有快捷方式Ctrl +T打开新标签时被任何人绕过 我们希望禁用它或任何其他创意,以禁用用户打开新标签的能力. 有什么想法? 谢谢! 解决方案 没有简单的方法可以做到这一点.所有范围都无法正常工作. 所以我找到了一个创意的解决方案: 在范围页面上,转到页面底部,单击快捷方式. 定义一个新快捷方式,用于扩展几乎无需或任何效果,并将其设置为'ctrl + t' 解决了我的问题!
18 2024-04-04
编程技术问答社区
从浏览器(扩展)启动TCP连接?
是否可以从浏览器启动TCP连接? 如果是这样,是否已经存在浏览器(尤其是Firefox和Chrome)的扩展名?如果还不存在扩展,您是否知道创建Firefox/Chrome浏览器引起的TCP连接的核心元素/函数? 解决方案 Chrome浏览器(我认为自稳定频道中的V24以来)使您可以托管TCP服务器,并且样品表明它可以连接到telnet服务器,这意味着它也可以成为TCP客户端. 样本/树/主/TCPSERVER 样品/树/主/telnet 但是这些不是标准化的,因此,如果您可以使用Websocket,则更喜欢. http://develoveler.chrome.chrome.com/apps/socket.html /p> 其他解决方案 有Websockets,但它们仅限于 in RFC中6455 . 到目前为止,大多数现代的Webbrowsers 支持它
6 2024-04-04
编程技术问答社区