相关疑难解决方法(0)

使用内容脚本将代码插入页面上下文

我正在学习如何创建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

452
推荐指数
5
解决办法
24万
查看次数

JavaScript:覆盖警报()

有没有人有过覆盖alert()JavaScript函数的经验?

  • 哪些浏览器支持这个?
  • 哪个浏览器版本支持此功能?
  • 覆盖功能有哪些危险?

javascript overriding

206
推荐指数
6
解决办法
9万
查看次数

是否可以注入一个覆盖DOM中存在的javascript代码?(例如默认警报功能)

好的,所以我想要的是覆盖选项卡中已经存在的方法,我将使用的是默认的警报功能.在JS函数中覆盖它会非常容易.加上

window.alert = function(){ 
   //Do Something
}
Run Code Online (Sandbox Code Playgroud)

但问题是,当我尝试使用chrome.tabs.executeScript("window.alert = function() { };");它时不起作用.我试图通过在我想要覆盖该功能的选项卡中使用Chrome中的控制台手动执行此操作,我在日志中键入了覆盖功能并按下了输入,完成后,警报功能被覆盖,但我无法做到这是通过Chrome扩展程序.

当您添加executeScript时,它似乎创建了一个除了选项卡DOM内部的Javascript之外的Javascript,因为我可以创建具有选项卡DOM中已存在的函数名称的函数.

有没有办法让executeScript在选项卡DOM中编写脚本,所以它实际上可以覆盖页面生成的.js文件所写的任何函数?

谢谢!

google-chrome google-chrome-extension

5
推荐指数
1
解决办法
5921
查看次数