Tag: google chrome extension

内容脚本中的监听器

让我解释一下我的问题。 我目前正在开发一个Google Chrome扩展程序,它会在每个网页中将工具栏注入iframe。 问题是我在某些情况下需要隐藏工具栏,重新显示它和类似的东西。 Basicelly我想把我的听众放在我的背景页面上,但它没用,因为这个页面不能图形化地操纵对象。 所以我的计划是将这个监听器放在content_script上(谁能用图形方式操作对象)。 但第二个问题是与背景页面相反的内容脚本不会一直执行,而只会执行一次。 所以我问自己是否有可能让内容脚本听起来像一个背景页面,通过在它上面放一个循环或类似的东西…… 提前致谢。 我试过这个: 的manifest.json { “background_page” : “background.html”, “browser_action” : { “default_icon” : “images/extension.png” //”popup” : “activateToolbar.html” }, “content_scripts”: [ { “all_frames”: true, “css”: [“css/yourtoolbar.css”], “js”: [“js/jquery.js”, “js/yourtoolbar.js”, “js/listener.js”], “matches”: [“http://*/*”], “run_at”: “document_end” } ], “permissions” : [“tabs”, “unlimitedStorage”, “http://*/*”, “notifications”], “name” : “YourToolbar”, “version” : “1.1”, “description” […]

Jquery:以完整路径获取favicon

我想从Jquery的网站上获取一个favicon的链接。 我只是使用$(‘link[rel=”shortcut icon”]’).attr(‘href’); 它工作正常。 但是……我并不总是有一条完整的道路。 例如,我可以有类似的东西 http://mywebsite.com/myicon.ico 或者只是相对路径 /myicon.ico 即使Url被编码为相对路径,我也希望始终拥有完整路径。 有一个简单的解决方案吗? 我将其用作Google Chrome扩展程序中的内容脚本。

Chrome扩展程序 – 查找所有打开的选项卡并执行所有脚本

在单击扩展按钮时尝试修改我的代码,它将在所有打开的选项卡上执行,而不是仅在活动选项卡上执行。 background.js chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript(null, { file: “jquery-2.1.0.min.js” }, function() { chrome.tabs.executeScript(null, {file: “change.js”}); }); }); 的manifest.json { “manifest_version”: 2, “name”: “GSHOP”, “version”: “2”, “description”: “I do Stuff”, “background”: { “persistent”: false, “scripts”: [“jquery-2.1.0.min.js”, “background.js”] }, “browser_action”: { “name”: “Manipulate DOM”, “icons”: [“icon.png”], “default_icon”: “icon.png” }, “permissions”: [ “activeTab”, “tabs”, “http://*/*”, “https://*/*” ] } 我相信我有逻辑,我无法想象如何去做。 […]

检测url上的更改

我需要一些东西来检测url上的更改,但页面不会回发,它会动态更改,只添加html中的div,所以URL页面是这样的 HTTP://www.examplepage/conversations/44455 当我点击页面的另一部分时,它就是 HTTP://www.examplepage/conversations/44874 它不仅在最后变化,而且像这样 HTTP://www.examplepage/settings 没有回复和重新加载JavaScript所以我的问题是,有没有办法检测这些变化? 和事件监听器但如何? 我搜索并且每个人都说哈希事件,但是在任何哈希之后我没有任何值,所以它不起作用 编辑 只是为了记录,我没有页面的代码,也没有访问权限,我会更好地解释,我正在做一个后台谷歌扩展,我只是添加了一个幻灯片到现有页面,这个页面改变了我的方式我解释的方式以上。 url会像每个页面一样发生变化,但是它们会更改html中的div,以便页面不必再次收取所有内容

Chrome扩展程序自定义光标

我构建了一个Google Chrome扩展程序,可以在网站中放置一些IMG标记。 这个img标签:hover必须显示一个自定义光标。 该扩展使用jQuery作为其注入的核心脚本。 我尝试了以下方法: 1。 var cursor = ‘url(‘+chrome.extension.getURL(‘icons/cursor.cur’)+’)’; $(‘#myImgId’).css({ ‘position’: ‘absolute’, ‘top’:’5px’, ‘left’:’5px’, ‘cursor’:cursor }); 这是最好的工作。 在较小的站点上,它显示光标。 在较慢的加载站点上它没有。 但在小网站上它有时会失败。 2。 var cursor = ‘url(‘+chrome.extension.getURL(‘icons/cursor.cur’)+’)’; $(‘#myImgId{cursor:’+cursor+’}’).appendTo(‘head’); 这什么都没做。 3。 在manifest.json中我注入了css。 “content_scripts”: [ { “matches”: [“http://*/*”], “css”: [“css/style.css”], “js”: [“j/c.js”, “j/s.js”] } css文件只有光标:url(icons / cursor.cur)因为我不知道,如何在css文件中获取真正的url。 这根本不起作用。 我认为它必须像这样工作,但我没有在code.google上找到这方面的参考。

将多个变量传递给内容脚本chrome

我正在编写我的第一个chrome扩展,几个小时前我就开始了。 当它被硬编码时,一切都运行良好。 基本上,我正在填写一份8页的表格。 表单的每个页面对应一个单独的内容脚本。 内容脚本看起来像这样:(找到字段有点困难,因为它们不是标准的,但我并不担心这个……这部分有用) var first_name = ‘John’; var last_name = ‘Doe’; … … document.getElementById(‘first_name’).value = first_name; document.getElementById(‘last_name’).value = last_name; 这很好(对我而言),但我想将它分发给少数人,他们都不会/可以使用源代码中的扩展,直接编辑变量。 所以我做了一个“选项”页面,以此为例: https : //developer.chrome.com/trunk/extensions/options.html 选项页面是要填充的表单的模型,每个用户都可以在此处输入其默认值。 我的save_options()函数基本上是(伪代码): foreach(fields as field) { localStorage[field] = document.getElement….(field); } 这很好用。 它可以正确保存,显示存储的值等。 当我尝试从内容脚本访问变量时出现问题。 从我所读到的,这不能(直接)完成,并且在线有各种方法可以显示如何执行此操作。 我想做这样的事情(内容脚本): var first_name = localStorage[“first_name”]; var last_name = localStorage[“last_name”]; … … document.getElementById(‘first_name’).value = first_name; document.getElementById(‘last_name’).value […]

从chrome扩展内容脚本中选择的

我无意中尝试从chrome内容脚本激活change()事件。 我已经浏览了网站和谷歌post,但仍然无效。 这里是我试图实现的描述 考虑以下网页(如果有人帮助,可以通过http://www.gilzu.com/TFF/select.html访问): Untitled Page $(document).ready(function () { $(‘#woot’).die(‘change’); $(‘#woot’).live(‘change’, function () { $(‘#description’).text(jQuery(‘#woot’).val()); }); console.log(“window ready”); $(“#meh”).click(function() { $(‘#woot’).val(15); $(‘#woot’).change(); }); $(‘#woot’).val(21); $(‘#woot’).change(); }); a b c d e f g 什么工作:1。在启动时,change()激活并将选择框更新为21并在div上显示正确的值。 2.按下#meh按钮,将选择框更改为15,触发在屏幕上显示正确值的change()事件。 到目前为止并不奇怪。 所以我通过以下方式前往内容脚本: $(document).ready(function () { $(‘#woot’).val(17); $(‘#woot’).change(); }); 所以select标签更新,但change()事件不会触发。 我已经阅读了关于chrome扩展孤立世界的论坛,并对此理论进行了测试: $(document).ready( function() { $(“#meh”).click(); }); 并且它实际上触发了选择框的click事件和change事件! 另外,与另一篇声称与js的代码注入有效的post相矛盾: $(document).ready( function() { […]

通过Javascript检测文档标题的更改

有没有办法通过Javascript检测对document.title / head > title的更改? 我希望通过Google Chrome扩展程序内容脚本检测到这一点,因此我无法在目标页面的JS中实际连接执行标题更改的代码。 我发现WebKitMutationObserver理论上应该能够检测到head > title的更改,但它并不适用于所有情况: // set up an observer for the title element var target = document.querySelector(‘title’); var observer = new WebKitMutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log(mutation); }); }); var config = { attributes: true, childList: true, characterData: true }; observer.observe(target, config); // this jQuery statement fires the observer as […]

为什么这个JQuery事件不会在gmail中触发?

我遇到了将Jquery事件绑定到gmail’body’的问题 $(‘body’).on(‘click’, function(event) { console.log(“Entered function”); }); 访问IMDB.com(例如)和谷歌Chrome开发者控制台粘贴上面的代码。 单击该页面时,您可以在控制台上看到“已输入的function”。 但是当我尝试使用gmail时,我收到以下消息: TypeError: Object # has no method ‘on’ gmail发生了什么,我该如何解决这个问题? 编辑: – 非JQuery版本: document.addEventListener(“click”, function() { console.log(“Entered function”); }, false); 就像评论者指出的那样,JQuery没有加载Gmail,这里是一个非JQuery版本,它可以在你点击gmail时工作,但当你点击一个链接(打开一个包含其中一些链接的电子邮件)时它不会工作了。

Chrome扩展程序中的触发器快捷方式

我正在构建Chrome扩展程序,并将命令_execute_browser_action分配给Alt + J. 我想在background.js中模拟这个,它监听所有使用的命令 chrome.commands.onCommand.addListener(function(command) { /* … */ }); 我想通过一个不同的命令快捷方式调用_execute_browser_action ,比如Cmd + Shift + K. 在我的manifest.json中,我声明了以下内容: “commands”: { “_execute_browser_action”: { “suggested_key”: { “mac”: “Alt+J”, “linux”: “Ctrl+Shift+J” } }, “asdf” : { “suggested_key”: { “default”: “Ctrl+Shift+K”, “mac”: “Command+Shift+K” }, “description”: “asdf” } } 这是我的background.js: chrome.commands.onCommand.addListener(function(command) { console.log(‘onCommand event received for message: ‘, command); if (command […]