如何在浏览器扩展和本机应用程序之间建立进程间通信?是否有任何跨平台(Linux和Mac OS X)和跨浏览器解决方案(Firefox,Chrome,Safari)?
我想到的唯一想法是使用本机Web技术,即在本机应用程序中嵌入HTTP服务器并使用XmlHttpRequest或WebSockets.然而,这听起来像笨重的过度杀戮一些问题(例如安全性).还有更好的选择吗?
ipc firefox-addon browser-extension google-chrome-extension safari-extension
我正在开发一个 chrome 扩展。最近我发现安装 Chrome 扩展后,它没有显示在工具栏中。有一个扩展工具栏图标。当我单击该图标时,它会显示所有已安装的扩展,然后我需要固定要在工具栏中显示的那些扩展。有什么方法可以自动固定我的分机吗?这样扩展图标就会自动在工具栏中可见。因为大多数用户抱怨扩展名没有显示。在我的扩展上,当用户单击工具栏图标时,它会打开一个弹出窗口。
在 iOS 15 中,Apple 也可以为 iOS 创建 Safari 扩展。我目前正在将现有的 macOS Safari 扩展引入 iOS。我的问题是,似乎没有选项可以将消息从主机应用程序发送到扩展程序。可以通过该
beginRequest(with:)功能应答来自分机的请求。但是,我主动需要在用户操作后向扩展程序发送消息。dispatchMessage(withName:toExtensionWithIdentifier:userInfo:completionHandler:)在 macOS 中,这可以通过此处描述的函数来完成: https ://developer.apple.com/documentation/safariservices/safari_web_extensions/messaging_ Between_the_app_and_javascript_in_a_safari_web_extension 。遗憾的是,此功能不适用于 iOS。
非常感谢任何解决这个问题的想法。
我知道Gmail有上下文和侧边栏小工具,但是如何使用诸如Rapportive之类的浏览器扩展工作?他们是否将按钮/显示器注入浏览器页面?如果是这样,如果谷歌决定改变他们布局页面的方式,浏览器扩展是否会中断?
gmail firefox-addon browser-extension google-chrome-extension
我试图寻找一个Chrome扩展程序来执行此操作,但找不到它.基本上,我想点击一个返回application/rdf + xml或application/xml的内容类型标题的Web服务,并让Chrome自动显示内联内容.我有XML Tree扩展,它可以很好地显示XML,但默认情况下Chrome会下载文件,除非它们有一定的扩展名.
我的问题是:有没有办法强制Chrome根据服务器返回的Content-Type内联打开某些内容?Chrome中的扩展或直接支持对我来说没问题.如果一个不存在,我会调查开发一个.

1)我试图在C#中制作一个简单的BHO,就像这里已经回答的那样:https://stackoverflow.com/a/5740004/285594
2)但不幸的是,他们都尝试了IE11,其中一些使它工作,一些也失败了
3)在按照该答案中提到的所有内容之后,我还购买了官方代码符号,但它根本不适用于IE11 Windows 7 64位.
您可以下载我准备好的Visual Studio 2013版本:其中包含IE11的所有源代码和详细信息:
https://www.dropbox.com/s/60kg212vkjb7yud/ClassLibrary2.rar
问:任何人都可以建议/建议/帮助我如何打造这个BHO的世界?
我也尝试了其他代码来自codeproject,但仍然没有一个我能够工作,尝试了4周后,我迷路了,请告诉我的ClassLibrary2.rar有什么问题,这不是浏览文本"浏览器" ?
我完全迷了,请指教.
编辑:
IEAddon.cs
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.Win32;
using mshtml;
using SHDocVw;
namespace InternetExplorerExtension
{
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("D40C654D-7C51-4EB3-95B2-1E23905C2A2D")]
[ProgId("MyBHO.WordHighlighter")]
public class WordHighlighterBHO : IObjectWithSite, IOleCommandTarget
{
const string DefaultTextToHighlight = "browser";
IWebBrowser2 browser;
private object site;
#region Highlight Text
void OnDocumentComplete(object pDisp, ref object URL)
{
try
{
// This will prevent this method being executed more than once. …Run Code Online (Sandbox Code Playgroud) 我们得到了很多404页面找不到错误,我们找不到相同模式的原因.我们没有对此404页面进行任何重定向,或者我们没有为这个损坏的页面链接提供链接.
这种错误的共同点是用相同的模式部分操纵的; 删除第一段网址.例;
这是真正的URL;
site.com/category/news/title-of-the-content
site.com/another-category/news/another-title-of-the-content
...
这就是我们得到的404;
site.com/category/news/
site.com/another-category/news/
...
我们是404错误的收集用户代理,在这里它们是;
Mozilla/5.0(兼容; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Mozilla/4.0(兼容; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; InfoPath.2)
Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.2; .NET4.0C ;. NET4.0E)
因此,此错误仅发生在Internet Explorer中.
我们认为这是因为一些IE插件但无法找到.有人有同样的问题吗?或者我们可以对这种情况做些什么?
提前致谢.
奖金:

browser url internet-explorer browser-extension http-status-code-404
我正在尝试通过 TypeScript 从网站 \xe2\x80\x94随机 OGS 示例\xe2\x80\x94 访问全局变量,以便从当前棋盘游戏获取数据。
\n我对 TS 还很陌生,所以我也不确定如何输入这个变量。全局变量本身实际上最初是在 TS 中创建的,但它具有无数的方法和属性,因为有如此多的功能。因此,如果我要自己输入它,我宁愿只输入我需要的内容(如果可能的话),或者以某种方式从某个包中导入它 \xe2\x80\x94 我不认为作者已在任何地方公开发表。
\n与此同时,还有一个问题是全局变量是否默认可用于浏览器扩展,但情况可能并非如此。
\n所以,我一直在尝试(我已经尝试了一百万种其他变体......)做的是类似 * \xe2\x80\x94 inside 的事情content.ts,它在OGS域 \xe2\x80\内部运行x94:
interface Goban {\n bounded_height: number;\n}\n\ndeclare var goban: Goban;\n\ngoban = window["global_goban"];\n\nconsole.log(goban.bounded_height.toString());\nRun Code Online (Sandbox Code Playgroud)\n我通常得到的错误是:
\nUncaught ReferenceError: goban is not defined\nRun Code Online (Sandbox Code Playgroud)\n那么我错过了什么?我必须创建声明文件 ( .d.ts) 吗?处理这种从第三方代码导入全局变量的正确方法是什么?
*:根据您尝试处理对象的方式window,您可能必须添加"suppressImplicitAnyIndexErrors": true到您的对象中tsconfig.json,以便 TS 不会静态地抱怨。
我一直在维护一个用 React 编写的小项目。它是一个浏览器扩展,为 Facebook Messenger 添加了类似 Slack 的表情符号支持。由于 Facebook 偶尔会改变一些东西,我需要对浏览器扩展进行新的更改,以便它们像以前一样工作。
Facebook 使用 a<div>并将contenteditable属性设置为 true。从我记事起,他们就一直这样做。然而,他们改变了一些东西,因为我曾经能够做到:
document.querySelector("div[contenteditable=true]").addEventListener(e => {
if(e.key == "Enter" && isActive) { //isActive means if the emoji picker is visible or not
e.preventDefault();
e.stopPropagation();
selectEmoji();
}
});
Run Code Online (Sandbox Code Playgroud)
但是,即使该元素存在,该事件也不再触发。除了 Enter 之外,每个键都会触发它。所以我开始用 MutationObserver 进行挖掘,令我惊讶的是,我注意到了这一点:
removedNodes: NodeList[<div with contenteditable=true>]
addedNodes: NodeList[NEW <div with contenteditable=true>]
Run Code Online (Sandbox Code Playgroud)
因此,一旦我按下 Enter 键,Facebook 就会发送消息,然后用新的聊天框元素替换整个“聊天框”元素(contenteditable=true 的 div)。
我不明白的是,当我按 Enter 键时,我的 addEventListener 如何没有触发。即使我做了这样的事情,它也不会起作用:
setInterval(() => {
var chatbox = document.querySelector("div[contenteditable=true]");
chatbox.addEventListener("keydown", () => ........ });
}, …Run Code Online (Sandbox Code Playgroud) 我第一次在这里问一些事情,所以我希望我足够清楚!(不要评判我......)
我需要构建一个 Web 扩展,但由于与我公司的工作方式相关的许多原因,我需要使用 nuxt 来完成它,我正在查看堆栈溢出、medium 和基本上所有互联网,就像没有人这样做过一样,有理由吗?有人可以帮我做吗?
顺便说一句,我的第一个想法是扩展 nuxt.config.js 中的构建配置,但我对 webpack 也不太了解,所以我想这会很困难,我什至不知道这是否可能,或者这是否是正确的方法做吧。
欢迎任何帮助!祝你今天过得愉快。
browser-extension google-chrome-extension web vue.js nuxt.js
javascript ×2
atl ×1
browser ×1
c# ×1
c++ ×1
content-type ×1
dom-events ×1
gmail ×1
ios ×1
ipc ×1
nuxt.js ×1
safari ×1
swift ×1
typescript ×1
url ×1
vue.js ×1
web ×1
xcode ×1