我正在学习如何创建Chrome扩展程序.我刚开始开发一个来捕捉YouTube活动.我想将它与YouTube Flash播放器一起使用(稍后我将尝试使其与HTML5兼容).
manifest.json的:
{
"name": "MyExtension",
"version": "1.0",
"description": "Gotta catch Youtube events!",
"permissions": ["tabs", "http://*/*"],
"content_scripts" : [{
"matches" : [ "www.youtube.com/*"],
"js" : ["myScript.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
myScript.js:
function state() { console.log("State Changed!"); }
var player = document.getElementById("movie_player");
player.addEventListener("onStateChange", "state");
console.log("Started!");
Run Code Online (Sandbox Code Playgroud)
问题是控制台给了我"开始!" ,但没有"状态改变!" 当我播放/暂停YouTube视频时.
将此代码放入控制台时,它可以正常工作.我究竟做错了什么?
javascript google-chrome youtube-api google-chrome-extension content-script
我们正在现有系统上构建chrome扩展,以帮助完成一些任务.
它的AJAX非常强大,它比抓取html和触发事件拦截一些AJAX响应要有效得多.
示例:Frome chrome控制台,网络选项卡,您可以看到漂亮的JSON:

Chrome扩展程序如何获得该JSON?
我尝试过WebRequest,但似乎不允许这样做.
javascript ajax google-chrome intercept google-chrome-extension
我正在寻找网页内的功能te激活chrome扩展.
想象一下,http://www.example.com/test.html包含:
<script>
hello();
</script>
Run Code Online (Sandbox Code Playgroud)
我的背景页面包含hello函数的定义:
function hello() {
alert("test");
}
Run Code Online (Sandbox Code Playgroud)
如何确保hello在test.html通话时调用Chrome扩展程序的后台页面hello();?
javascript google-chrome google-chrome-extension content-script
我正在使用第三方库生成一个原始XMLHttpRequest的new XMLHttpRequest.
这绕过了我的CSRF保护并被我的rails服务器击落.
有没有办法在实例化时将全局添加预定义的CSRF令牌($('meta[name=csrf-token]').attr('content'))添加到所有实例XMLHttpRequest?
当我使用Chrome API收听所有HTTP请求时,如何从中获取实际数据?
我的意思是如果请求是在php页面(XMLHttpRequest)上进行的,我该如何获取此页面的内容?
.
我现在正在使用ajax请求查询数据.但这不是一个好的解决方案.
主要问题是请求使用POST方法.从ajax查询收到的数据与从HttpRequest收到的数据不同.
javascript webrequest httpwebrequest google-chrome-extension
我有一个chrome扩展程序,目前正在使用webrequest api.我的问题很简单,是否可以使用webrequest api 阻止和修改 AJAX请求?如果没有,是否有解决方法?
PS.我试图将一些HTML注入到GMail电子邮件中,但到目前为止我找到的唯一解决方案是检测所有各种类型的组合,然后注入我的HTML.除了不稳定之外,这种方法很好,只有大约70%的时间插入工作.
如果有更好的方法,请告诉我,谢谢!
编辑
如果有人需要,可以找到一些替代解决方案.
XMLHttpRequest.send方法以广播事件.您可以在发出请求之前修改请求.我遇到了将内容脚本插入到由history.pushState和ajax调用更改的页面中的问题.我在stackoverflow上找到了类似的主题,但该解决方案对我不起作用(该解决方案是使用chrome.webNavigation.onHistoryStateUpdated和"popstate"事件).
这是我的清单的一个片段:
"content_scripts": [
{
"matches": ["https://vk.com/audios*", "https://vk.com/al_audio.php*"],
"js": ["jquery-2.1.4.min.js", "getListOfSongs.js"]
}
]
Run Code Online (Sandbox Code Playgroud)
chrome.webNavigation.onHistoryStateUpdated仅当我导航到另一个页面时才有效,如果我按顺序多次导航到同一页面没有任何反应.例如:它工作时
1)首次访问https://vk.com/audios* - 首页或重新加载
2)转到https://vk.com/some_other_page - ajax调用
3)转到https://vk.com/audios* - ajax电话
它不起作用
1)首次访问https://vk.com/audios* - 首页或重新加载
2)再次转到https://vk.com/audios* - ajax调用,此时内容脚本没有注入
3)再次转到https://vk.com/audios* - ajax调用,at这一点内容脚本不是注入等等
每次我第二次点击同一页面时依次生成以下请求:
https://vk.com/al_audio.php?__query=audios*********&_ ref = left_nav&_smt = audio%3A2&al = -1&al_id =********&_ rndVer = 60742
(请求参数可能有所不同)
此外 JQuery的.ajaxComplete不赶在这种情况下,任何事件.
并且pushState不会触发"popstate"事件,因此我无法使用window.onpopstate事件
我可能会使用chrome.webNavigation.onDOMContentLoaded和chrome.webNavigation.onCompleted,但是当我重新加载页面时,这些事件发生的时间超过一次,因此脚本将被多次注入.
这种情况的最佳解决方案是什么?
javascript ×6
ajax ×3
csrf ×1
dom ×1
intercept ×1
security ×1
vk ×1
webrequest ×1
youtube-api ×1