我正在构建一个Chrome扩展程序,可以让您在Facebook帖子中添加一些新的反应。您可以在此处查看其第一个版本:http://reactions.us/
我现在处理它的方式有点不优雅。当用户添加"反应"时,我会添加自定义表情符号作为注释,然后解析它,从dom中删除原始注释,并添加相应的"反应" ;到了帖子。
这就是我想做的事情
我想在http://api.reactions.us说出一个外部api,以便设定并获得某个故事的反应。为了做到这一点,我(想)我需要向页面添加一个ajax调用。但是当我将ajax调用添加到" web_accessible_resources"通过" content_scripts"中的init脚本加载到页面上的脚本我收到这个错误:
Refused to connect to 'http://reactions.us/getReactions?id=111' because it violates the following Content Security Policy directive: "connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net https://fb.scanandcleanlocal.com:* *.atlassolutions.com http://attachment.fbsbx.com https://attachment.fbsbx.com".
以下是插件中的相关代码:https://github.com/ollerac/New-Facebook-Reactions/blob/master/reactions.js#L161
非常感谢任何帮助。也许有一种方法可以在内容脚本和网络可访问资源之间传递消息?
答案 0 :(得分:3)
我找到了答案。我刚开始时遵循了这篇文章的建议:Insert code into the page context using a content script
如果您不需要访问任何chrome API函数,建议您将脚本直接注入页面,这正是我所做的,因为我之前不需要它们。
但你可以做几乎相同的事情(访问和修改dom - 现在甚至可以制作ajax请求)仅仅使用内容脚本。
在使用内容脚本讨论跨域XMLHttpRequest时,这篇文章很有用:Cross-domain XMLHttpRequest using background pages