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

Google Chrome扩展程序 - 脚本注入

我正在尝试让我的Chrome扩展程序注入一些javascript content_scripts,使用此前一个答案作为参考.

的manifest.json

"name": "My Chrome Extension",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [{
    "matches": ["http://pagetoinject/script/into/*"],
    "js": ["contentscript.js"]
}]  
Run Code Online (Sandbox Code Playgroud)

contenscript.js:

var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
(document.head||document.documentElement).appendChild(s);
s.parentNode.removeChild(s);
Run Code Online (Sandbox Code Playgroud)

(也尝试过 这个方法没有成功.)

var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)

我一直收到这个javascript错误.这是一个截图.

在此输入图像描述 GET chrome-extension://invalid/ (anonymous function)

javascript jquery google-chrome-extension

42
推荐指数
1
解决办法
4万
查看次数

Chrome扩展程序Javascript:如何在另一个JavaScript执行后获取window.location并获取href链接而不进行重定向

我有一个支持chrome扩展程序,它是自定义网站从中获取信息的解决方法。我试图确定表中每一行的重定向链接,因为它没有到react表的普通href。

在此处输入图片说明

查看代码,我确定一旦单击屏幕上的屏幕x / y位置以执行操作,页面就会被重定向。然后,它通过网站上的固有脚本来获取基于该位置的ID /链接以提供链接。

在下一节之后,其余部分将缩小。

export function _onClick(_ref) { //_ref = MouseEvent {isTrusted: true, screenX: 1230, screenY: 458, clientX: 201, clientY: 332, …}

  var target = _ref.target; //target = td.col-xs-2 {__reactInternalInstance$db9spb3eyf: At, __reactEventHandlers$db9spb3eyf: {…}, colSpan: 1, rowSpan: 1, headers: "", …}


  store.activate([].concat(_toConsumableArray(store.getInstances())).reduce(domHelpers.findContainerNodes(target), []).sort(domHelpers.sortByDOMPosition).map(function (item) { //target = td.col-xs-2 {__reactInternalInstance$db9spb3eyf: At, __reactEventHandlers$db9spb3eyf: {…}, colSpan: 1, rowSpan: 1, headers: "", …}

    return item.instance;
  }));
}
Run Code Online (Sandbox Code Playgroud)

如此说来,chrome扩展程序的目的之一是获取页面上重定向到的所有链接(表的每一行都被重定向而未在表中显示href链接)。由于它没有附加到按钮的简单href链接,因此我很难确定如何获取该链接,而无需重定向到页面本身。

我尝试过类似的操作,但是它没有重定向就无法获得我所需要的信息。

window.onclick = function(e) { 
            console.log(e);
        };
Run Code Online (Sandbox Code Playgroud)

window.onclick重定向事件 srcElement显示正在重定向的baseURI

任何帮助将非常感激。谢谢


添加了一些新内容,以尝试帮助获取webRequest,但似乎在manifest.js中不起作用。

"content_security_policy": "script-src 'self' 'unsafe-eval'; …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

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