我们希望通过我们合作伙伴网站的内嵌安装来发布我们的Chrome扩展程序。而且我们希望从扩展程序内部知道它是从哪个网站安装的。 有没有一种方法可以在安装过程中插入参数并在扩展中接收它? 在此先感谢。有没有办法将参数传递给Chrome扩展?
0
A
回答
1
在Chrome内联安装API中没有直接的方法来完成它,但是有一种方法可以将它连接起来,这需要一点点修改。
从本质上讲,你需要两件事情:
- 知道,当一个浏览器扩展程序安装已 成功完成您的分机上的合作伙伴网站的能力。
- 一个机制,从合作伙伴的网站,发送消息到您的chrome 扩展名。
第一个很容易,也是chrome安装API的一部分,只需使用successCallback函数安装API,如here所列。
既然您已经知道发生了安装的时间点,那么将URL放到您的扩展中就会有些复杂。最简单的方法是将事件数据中的URL发送到一个自定义JavaScript事件到节点(文档可以正常工作),然后在扩展中,您可以在文档上侦听此自定义事件类型。然后在事件处理程序中,您将拥有该URL。
但这是很容易的部分。棘手的部分是你的内容脚本不会在你刚安装的标签上。如果您的扩展程序中有内容脚本随每次页面加载而加载,则只会在安装之后加载每个页面加载。那么你从那里安装的页面?在刷新它之前,您将无法获得该页面的扩展。
我可以为此考虑一些解决方案,而且它们都不是很好。首先,如果在你的合作网站上,他们不介意你使用URL搞砸,你可以添加一个散列(假设没有散列),并带有一个标志,表示你的扩展刚安装好。然后,您可以使用Chrome扩展标签API来查找当前活动窗口中当前活动选项卡的URL。阅读你的扩展的负载,如果它有一个说“#extensionInstallId =”,那么你可以认为这个扩展只是从该URL安装并记录下来。这并非万无一失,因为如果用户离开该选项卡时,当他们重新打开浏览器时,您将得到误报,并在只有一个安装事件时收到2个安装事件。我想你甚至可以在localStorage中为扩展存储一个标志,并检查它是否真的是第一次安装。
其次是做类似this的事情。这很麻烦,因为它会创建一个新的弹出窗口(仅用于将此事件发送到您的扩展)。
相关问题
- 1. 有没有办法将参数传递给pkg
- 2. 有没有办法将参数传递给is运算符?
- 3. 有没有办法将参数传递给ant任务命令?
- 4. 有没有办法将参数传递给NATURAL子例程?
- 5. 有没有办法将ServletRequest参数传递给JavaScript?
- 6. 有没有办法将参数传递给setter
- 7. 有没有办法将请求参数传递给/ health端点?
- 8. 有没有办法将参数传递给m.me/username URL?
- 9. WinJS:有没有办法将参数传递给x-ms-webview?
- 10. 有没有办法将命令行参数传递给spec/rspec?
- 11. 有什么办法可以将Context传递给HtmlHelper扩展吗?
- 12. 有没有办法使用扩展程序从Google Chrome传递信息?
- 13. 有没有办法将方法作为参数传递给方法?
- 14. 将变量传递给chrome.tabs.onUpdated.addListener() - Chrome扩展
- 15. 如何通过Selenium Script c#将参数传递给Chrome扩展?
- 16. Javascript:将构造函数参数传递给原型链。有没有办法?
- 17. 有没有办法将函数作为参数传递给程序集?
- 18. 有没有办法将一行作为参数传递给MySQL函数?
- 19. 有没有办法将一个变量传递给keypressed函数?
- 20. 有没有办法将查询传递给PHP函数
- 21. 有没有办法将任务ID传递给调用函数?
- 22. 有没有办法将一个数组传递给rs.exe
- 23. 有没有办法将多个函数传递给AngularJS指令?
- 24. 有没有办法将数组传递给currentEhen在EmberJS中?
- 25. 有没有办法将void作为参数传递?
- 26. Chrome扩展:问题与传递参数
- 27. OpenCover没有将参数传递给NUnit
- 28. 有没有办法将限制参数传递给Spark中的functions.collect_set?
- 29. 有没有办法将一个参数传递给express nodejs中的路由器?
- 30. 有没有办法使用wrk将参数传递给GET请求?
另一种方式可能是使用历史api来查找最近访问的合作伙伴网址。 –