我正在学习如何创建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
我正在开发Chrome扩展程序.我希望解析"原始"Gmail邮件(当前查看的邮件)的内容.
我试图利用jQuery.load()如下
$(windows).load(function() { alert(GLOBALS); });
Run Code Online (Sandbox Code Playgroud)
并将其放在内容脚本中,但它也不起作用.我正在使用Chrome的开发人员工具,它会在调用时返回以下错误alert(GLOBALS);
未捕获的ReferenceError:未定义GLOBALS
虽然,在使用开发人员工具的控制台时,键入控制台GLOBALS
会返回一个数组.
有关如何从内容脚本访问GLOBALS的任何线索?
我通过Chrome扩展程序在页面末尾添加了一些外部JavaScript.然后外部JavaScript尝试将一些数据发布回服务器,但是没有发生.
JavaScript希望获取当前页面和引用者的URL并将其发回服务器.
任何人都可以请教我这里有什么问题,如果不可能这样我怎样才能将数据从当前页面发回服务器.
的manifest.json
{
"name": "Website Safety",
"version": "1.0",
"manifest_version": 2,
"description": "The Website Safety Extension.",
"browser_action": {
"name": "View the website information for ",
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"tabs", "http://*/*", "https://*/*"
],
"background": {
// "scripts": ["refresh.js"]
"page": "background.html"
},
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
//"background_page": "background.html"
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["contentScript.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在是contentScript.js
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-31046309-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = …
Run Code Online (Sandbox Code Playgroud) javascript dom google-analytics google-chrome-extension content-script
我写了一个Chrome扩展程序.我无法使用
localStorage.setItem
和localStorage.getItem
存储和检索,因为后台和浏览器操作在不同的环境中运行[ 如此处所示 ].
所以我决定使用Chrome存储API:
var storage = chrome.storage.local;
var myTestVar = 'somevar';
var obj = {};
obj[myTestVar] = $("#somevar").val();
storage.set(obj);
Run Code Online (Sandbox Code Playgroud)
这产生了以下错误:
未捕获的TypeError:无法读取未定义的属性"local"
我究竟做错了什么?
javascript local-storage google-chrome-extension google-chrome-storage
我在.js文件中定义了一个全局对象.例如,file1.js包含全局对象SomeObject.此文件在background.html中加载.
由于file1.js包含在background.html中,因此我可以访问此页面中的全局对象.所以这里没有问题.
当执行诸如单击扩展按钮之类的事件时,我正在使用chrome.tabs.executeScript(null, {file: "contentscript.js"});
api 运行内容脚本.
在这种情况下,如何访问脚本中的SomeObject?
在background.html
:
chrome.tabs.query({active:true, currentWindow:true},function(tabs){
chrome.tabs.sendMessage(tabs[0].id,"target.js");
});
Run Code Online (Sandbox Code Playgroud)
在content.js
:
chrome.extension.onMessage.addListener(function(msg,sender,sendResponse){
if (msg == "target.js"){
extensionID = sender.id;
}
});
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用;
Uncaught TypeError: Cannot read property 'onMessage' of undefined
Run Code Online (Sandbox Code Playgroud)
怎么做对了?
有没有办法在Chrome的JavaScript控制台中使用Tampermonkey的API?
我想弄乱像GM_xmlhttpRequest()
和的功能GM_listValues()
.
javascript console google-chrome google-chrome-devtools tampermonkey
我正在开发一个需要chrome
对象的用户脚本,但我无法访问它。如何访问chrome
tampermonkey 用户脚本内的对象?也许,清单中的一些权限或者什么......
我正在编写Chrome扩展程序,它执行简单的ajax调用(基于此示例来自文档):
$.ajax({
type: "GET",
url: "http://www.flags.99k.org/getFlags.php"
}).done(function(response) {
alert("SUCCESS: " + response);
}).fail(function(response) {
alert("FAILURE: " + response);
});
Run Code Online (Sandbox Code Playgroud)
请求总是失败,因为警报显示:FAILURE: [object Object]
.
该URL有效:当我将http://www.flags.99k.org/getFlags.php放入我的地址栏时,我得到了这个:
[{"UID": "1", "Message": "Hello"}, {"UID": "2", "Message": "World"}, {"UID": "3", "Message": "Hello World"}]
Run Code Online (Sandbox Code Playgroud)
这是我的manifest.json扩展名.
{
"name": "Hello World",
"version": "1.0",
"description": "The first extension that I made.",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"http://www.flags.99k.org/"
]
}
Run Code Online (Sandbox Code Playgroud)
我使用Chromium 17.0.963.79(Developer Build 125985 Linux)Ubuntu 11.10.
我正在研究chrome扩展,我能够成功地将信息存储到本地存储,但我的问题实际上是在本地存储中访问该信息.什么我没有不返回任何只是说NULL.
我有两个文件:options.html和content.js.options.html是用户输入信息以保存到本地存储的位置,content.js将访问要使用的信息.
options.html
$(function() {
// Insert new buttons (you'd probably not ACTUALLY use buttons, instead saving on blurs or every x seconds)
$("#save_buttons").after("<input type='submit' value='Save Form' id='saveData'>").after("<input type='submit' value='Clear Saved Data' id='clearData'>");
$("#saveData").click(function(e) {
// Don't actually submit form
e.preventDefault();
// Bit of generic data to test if saved data exists on page load
localStorage.setItem("flag", "set");
// serializeArray is awesome and powerful
var data = $("#hanes").serializeArray();
// iterate over results
$.each(data, function(i, obj) {
// HTML5 magic!!
localStorage.setItem(obj.name, obj.value); …
Run Code Online (Sandbox Code Playgroud) 我想知道每次页面加载时是否可以自动运行我的扩展(或我的扩展中的功能)?现在,我已设置您将单击图标浏览器操作图标以运行我的扩展.
javascript ×8
dom ×2
html ×2
jquery ×2
tampermonkey ×2
ajax ×1
autorun ×1
console ×1
html5 ×1
userscripts ×1
youtube-api ×1