相关疑难解决方法(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万
查看次数

拦截Chrome扩展程序中的AJAX响应

我们正在现有系统上构建chrome扩展,以帮助完成一些任务.

它的AJAX非常强大,它比抓取html和触发事件拦截一些AJAX响应要有效得多.

示例:Frome chrome控制台,网络选项卡,您可以看到漂亮的JSON: 在此输入图像描述

Chrome扩展程序如何获得该JSON?

我尝试过WebRequest,但似乎不允许这样做.

javascript ajax google-chrome intercept google-chrome-extension

13
推荐指数
1
解决办法
5283
查看次数

从网站调用Chrome扩展程序的后台功能

我正在寻找网页内的功能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)

如何确保hellotest.html通话时调用Chrome扩展程序的后台页面hello();

javascript google-chrome google-chrome-extension content-script

9
推荐指数
2
解决办法
1万
查看次数

全局添加X-CSRF-Token标头到XMLHttpRequest()的所有实例;

我正在使用第三方库生成一个原始XMLHttpRequestnew XMLHttpRequest.

这绕过了我的CSRF保护并被我的rails服务器击落.

有没有办法在实例化时将全局添加预定义的CSRF令牌($('meta[name=csrf-token]').attr('content'))添加到所有实例XMLHttpRequest

javascript security ajax xmlhttprequest csrf

9
推荐指数
2
解决办法
3万
查看次数

如何在Google Chrome扩展程序中获取网络请求的结果?

当我使用Chrome API收听所有HTTP请求时,如何从中获取实际数据?

我的意思是如果请求是在php页面(XMLHttpRequest)上进行的,我该如何获取此页面的内容?

.

我现在正在使用ajax请求查询数据.但这不是一个好的解决方案.

主要问题是请求使用POST方法.从ajax查询收到的数据与从HttpRequest收到的数据不同.

javascript webrequest httpwebrequest google-chrome-extension

7
推荐指数
1
解决办法
3477
查看次数

使用webRequest阻止和修改AJAX请求

我有一个chrome扩展程序,目前正在使用webrequest api.我的问题很简单,是否可以使用webrequest api 阻止和修改 AJAX请求?如果没有,是否有解决方法?

PS.我试图将一些HTML注入到GMail电子邮件中,但到目前为止我找到的唯一解决方案是检测所有各种类型的组合,然后注入我的HTML.除了不稳定之外,这种方法很好,只有大约70%的时间插入工作.

如果有更好的方法,请告诉我,谢谢!

编辑

如果有人需要,可以找到一些替代解决方案.

  • 覆盖默认XMLHttpRequest.send方法以广播事件.您可以在发出请求之前修改请求.
  • 覆盖默认表单提交方法并在提交之前拦截所有表单提交(修改表单数据)

google-chrome google-chrome-extension

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

当history.pushState和ajax调用更改页面时插入内容脚本

我遇到了将内容脚本插入到由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.onDOMContentLoadedchrome.webNavigation.onCompleted,但是当我重新加载页面时,这些事件发生的时间超过一次,因此脚本将被多次注入.

这种情况的最佳解决方案是什么?

javascript ajax dom google-chrome-extension vk

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