所以我已经半夜摔跤这个,并且没有在Google或SO上找到任何明确的答案,所以请原谅我可能会问一个重复的问题。 :)
所以我一直在研究如何从谷歌Chrome应用程序运行本机应用程序,虽然我认为我已经达到了所需数量的75%,但我仍然有更多的问题而不是答案。我已经阅读了有关“本机消息”的所有文档,包括调试部分,但似乎还没有足够的文档(我猜测Chrome应用程序仍然是一个新概念,这就是Google的大部分文档是为了扩展)。无论如何这里是一些代码:
chrome.app.window.create('index.html', {
id: 'main', // Tried replacing this with the app ID found in chrome://extensions; still didn't work.
bounds: { width: 200, height: 500 }
});
// Looks simple enough, I'll explain the randomness later :)
chrome.runtime.sendNativeMessage("test1", { text: "whatever" });
});
我将我的原生应用程序注册为“主机”,并且运行正常。这是看起来像:
REG ADD "HKCU\Software\Google\Chrome\NativeMessagingHosts\test1" /ve /t REG_SZ /d "C:\\My
Stuff \ Code \ Projects \ Desktop \ MyProject \ source \ native.json“/ f 这是该位置的文件:
{
"name": "native_app",
"description": "A native app (in this case an AutoHotkey script)",
"path": "native.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension://gielahlojnnpjhamfiebdcppafijhppb"
]
}
最终结果:
TypeError: chrome.runtime.sendNativeMessage is not a function
所以,现在我要回答问题:
我已经看到我自己的代码“不是函数”错误,并且通常知道如何解决它;但既然这是指向谷歌的API ...... ????显然,谷歌在某个地方定义了它,或者它不在他们的文档中;那还有什么可能导致它咳出这个错误?我在SO上找到的最接近的是某人试图从扩展中的内容脚本发送本机消息(无关)。所以调试这个goober将是fuuuuun ...:/ lol idk
我注意到在“allowed_origins”下它表示“扩展” - 我应该用“app”替换它,因为它是Chrome应用程序吗?文档没有说明。
Chrome应用和扩展程序的chrome。* API是否相同?我对扩展所做的大部分工作都是内容脚本,所以我真的不确定,但它们看起来很可怕,所以也许呢?这可以解释为什么大多数文档和帖子只用于扩展(但是如果是扩展或应用程序则无关紧要。)
而且我有很多其他人,但这对一个帖子来说已经足够了,哈哈。谢谢! :)
答案 0 :(得分:1)
很抱歉回答我自己的问题(反正#1):问题是我的清单文件中的权限。它不是一个功能"因为我没有添加那部分。但现在它返回未定义(并且响应文本未定义)所以我仍然有太多的研究要做(而且它就像凌晨4点,哈哈)。所以问题2& 3仍然开放。再次感谢。