相关疑难解决方法(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扩展内容脚本执行网页js

我在我的网页html代码中有这个js函数.

function update() {
    document.getElementById( "textbox ").value = updatetext;
}
Run Code Online (Sandbox Code Playgroud)

当我从chrome控制台执行"update()"时,它可以工作.
但是如果我从chrome扩展程序执行,

chrome.tabs.executeScript(tab.id, {code: "update();"}, function(result){});
Run Code Online (Sandbox Code Playgroud)

它说没有定义更新.但如果我用"alert('ok')替换",它就有效.
然后我执行

eval("update()")
Run Code Online (Sandbox Code Playgroud)

在Chrome扩展程序内容脚本中.它还说"未定义更新".

那么我该怎么做才能在网页上调用js函数呢?

javascript google-chrome google-chrome-extension

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

Chrome扩展程序 - 将对象从页面传递到上下文脚本

我正在写一个chrome扩展,我正在努力将一个对象从主页传递回上下文脚本.我似乎无法访问窗口的变量.

ContextScript

//STORE DATA TO CHROME STORAGE ON EVENT
//create hidden input
var hiddenInput = document.createElement("input");
hiddenInput.setAttribute("type", "text");
hiddenInput.setAttribute("id", "__HIDDEN__RESULT__");
//add input to page
var currentItem = document.body.appendChild(hiddenInput);
//event to be fired on click
currentItem.onclick = function() {
    //get the global variable window.listOfCourses and stick it in storage
    chrome.storage.local.set({'dataVault' : window.listOfCourses});
};

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

注入的脚本

function processData()
{
    window.listOfCourses = [];

    for (i=0; i < window.completedData.length; …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

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

在chrome扩展中使用页面的角度JS

我有一个HTML页面,其中有一些DOM配置了Angular.现在我正在构建一个chrome扩展来修改文本框中的值.element.value= newValue因为文本框是使用Angular设计的,所以不起作用.在阅读了一些资源后,我才知道我需要对元素的范围进行更改.我尝试在扩展中执行此操作.

var eleScope = window.angular.element(document.querySelector('.textbox')).scope();
eleScope.$apply(function() {
  eleScope.item.request.box = newValue;
});
Run Code Online (Sandbox Code Playgroud)

这似乎没有按预期工作.当我更深入地研究这个问题时,我开始知道窗口范围内的角度没有得到正确的范围.

我也尝试从我的扩展中注入angular.js并angular.element直接使用,这似乎也没有解决问题.

我错过了什么.感谢您的回复.

javascript google-chrome-extension angularjs

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

为什么chrome.runtime未定义?

我正在创建Google Chrome扩展程序(我的第一个扩展程序),并且我希望将扩展程序中的邮件发送到当前选项卡.

我正在关注文档:

https://developer.chrome.com/apps/runtime#event-onMessage

该扩展将一个小的外部JS加载到选项卡的HTML中,该HTML包含以下代码:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        console.log(request)
    }
);
Run Code Online (Sandbox Code Playgroud)

加载JS后,我收到以下错误:

Uncaught TypeError: Cannot read property 'onMessage' of undefined.

打开控制台和键入chrome,我可以看到运行时不是属性chrome.

看起来我做错了什么,但是什么?我需要在manifest.json文件中添加内容吗?

Chrome版本39.0.2171.71米

谢谢.

javascript google-chrome-extension

2
推荐指数
2
解决办法
4780
查看次数

从新的 dom 按钮调用内容脚本函数

这是一个非常简单的例子:

清单文件

{
  ...
  "content_scripts": [
    {
      "js": [
        "/js/external/jquery-2.1.3.min.js", 
        "/js/content_script.js"
      ],
      ...
    }
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)

content_script.js

function demo() {
  alert('demo');
}

$(function() {
  $( "body" ).prepend( 
    "<input type=\"button\" value=\"Press me\" onclick=\"demo()\" />"
  );
});
Run Code Online (Sandbox Code Playgroud)

我在控制台中收到此错误:

{
  ...
  "content_scripts": [
    {
      "js": [
        "/js/external/jquery-2.1.3.min.js", 
        "/js/content_script.js"
      ],
      ...
    }
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)

如何让功能发挥作用?

javascript jquery google-chrome-extension

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