我正在学习如何创建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
如何使用greasemonkey脚本/ Chrome的用户脚本拦截正在运行的websocket通信?
我的目标是为浏览器内游戏提供额外的统计信息
我想创建一个Chrome Developer Tools扩展程序(一个新的面板)来分析我们自己网站上的WebSockets框架.据我所知,http://developer.chrome.com/extensions/devtools.network.html不够完整,无法访问WebSockets框架.那么我最好的选择是什么?
谢谢!
我刚看到这个链接,关于如何在Chrome开发工具上检查"Canvas框架",但是如何在Chrome扩展程序上进行检查?
我认为chrome.debugger.sendCommand应该在这里使用该方法.
如何在Chrome扩展程序上执行此操作?
编辑:我通常想要使用Chrome的调试器或类似方法检查这些数据,而无需与JavaScript的代码交互.
我正在编写一个 Firefox 扩展,需要监听浏览器和服务器之间的通信。对于 HTTP 通信,我在后台脚本中使用 webRequest 库。但根据这个 Mozilla 错误报告,我无法使用 webRequest 拦截 WebSocket 消息。我的扩展如何监听 WebSocket 通信?
更新:
我已经注入了我的WebSocket 包装器,但它从未被调用!我试图监听的 WebSocket 位于 iframe 内。这有关系吗?
javascript intercept websocket google-chrome-extension firefox-addon-webextensions
我在这个问题上花了几个星期,但似乎找不到解决方法。这是用例。我正在开发chrome扩展程序,此扩展程序的主要目的之一是检测WebSocket何时打开或关闭。我看过WebSockets的HTML5规范,它们公开了以下相关方法/事件:
WebSocket.prototype.readyState = 0;
WebSocket.prototype.onopen = 0;
WebSocket.prototype.onerror = 0;
WebSocket.prototype.onclose = 0;
function WebSocket(url,protocols) {}
WebSocket.prototype.close = function(code,reason) {};
Run Code Online (Sandbox Code Playgroud)
由于我无法从扩展中访问单个实例,因此我不得不依靠包装这些原型来确定何时调用它们。例如:
WebSocket.prototype.close = function (close) {
console.log("Closing socket....");
return function (code, reason) {
return close.apply(this, arguments);
};
}(WebSocket.prototype.close);
Run Code Online (Sandbox Code Playgroud)
但是,我真正想做的是以某种方式为onopen,onerror或onclose包装或注册侦听器。不幸的是我不知道该怎么做。我尝试了一堆不同的方法。上面的方法适用于“关闭”,但它们不提供我依赖的“打开”。最有前途的想法没有用,它是:
WebSocket.prototype.constructor = function (constructor) {
debugger;
console.log("Register all my events here!");
constructor.apply(this, arguments);
}(WebSocket.prototype.constructor);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我从不能够达到断点或查看控制台日志,这使我相信自己做错了什么。
作为最后的选择,我尝试使用Object.Observe(),但无法观察原型:
Object.observe(WebSocket.prototype.readyState, function (changes) {
console.log("Ready state");
});
Object.observe(WebSocket.prototype.onopen, function (changes) {
console.log("On open");
});
Run Code Online (Sandbox Code Playgroud)
因此,总而言之,我尝试了几种不同的方法,但最终我碰壁了。最后,我的目标是通过侦听任何公开的方法或事件来检测WebSocket何时打开或关闭。任何帮助将不胜感激。
更新: 这是一个小提琴,包括以下建议:
http://jsfiddle.net/s35zpfq9/1/
谢谢!
javascript html5 websocket google-chrome-extension google-chrome-devtools
javascript ×5
websocket ×3
firefox-addon-webextensions ×1
html5 ×1
intercept ×1
userscripts ×1
youtube-api ×1