Tag: google chrome extension

在Chrome上从Greasemonkey脚本将JS函数注入页面

我有一个Greasemonkey脚本,在Firefox和Opera中运行得很好。 但是,我努力在Chrome中使用它。 问题是注入一个函数到页面中的代码可以调用的页面。 以下是我到目前为止所做的: 首先,我得到了Firefox的unsafeWindow的帮助参考。 这使我有相同的FF和Opera代码(和Chrome,我想)。 var uw = (this.unsafeWindow) ? this.unsafeWindow : window; 接下来,我向页面中注入一个函数。 它实际上只是一个非常薄的包装器,除了在我的GM脚本的上下文中调用相应的函数外,什么也不做: uw.setConfigOption = function(newValue) { setTimeout(setConfigOption, 0, newValue); } 然后,在我的脚本中有相应的function: setConfigOption = function(newValue) { // do something with it, eg store in localStorage } 最后,我用一个链接来调用函数,将一些HTML注入到页面中。 var p = document.createElement('p'); p.innerHTML = '<a href="javascript:setConfigOption(1)">set config option to 1</a>'; document.getElementById('injection-point').appendChild(p); 总结一下:在Firefox中,当用户点击注入的链接时,它会在unsafeWindow上执行函数调用,然后触发一个超时,在我的GM脚本的上下文中调用相应的函数,然后进行实际的处理。 (如果我在这里错了,请纠正我) […]

chrome.storage.sync未定义?

我试图通过content_script在扩展中使用chrome存储,但我一直在失败 Uncaught TypeError: Cannot read property 'sync' of undefined 这是我的代码: testChromeStorage(); function testChromeStorage() { console.log("Saving"); chrome.storage.sync.set({'value': theValue}, function() { message('Settings saved'); }); chrome.storage.sync.get("value", function (retVal) { console.log("Got it? " + retVal.value); }); }

Chrome扩展程序:从后台到内容脚本的sendMessage不起作用

我知道这个问题已经以不同的方式被多次提出,但是我试图通过所有的答案(希望我没有错过任何人),他们都没有为我工作。 这是我的扩展的代码: performance: { "name": "test", "version": "1.1", "background": { "scripts": ["contextMenus.js"] }, "permissions": ["tabs", "<all_urls>", "contextMenus"], "content_scripts" : [ { "matches" : [ "http://*/*" ], "js": ["jquery-1.8.3.js", "jquery-ui.js"], "css": [ "jquery-ui.css" ], "js": ["openDialog.js"] } ], "manifest_version": 2 } contextMenus.js function onClickHandler(info, tab) { if (info.menuItemId == "line1"){ alert("You have selected: " + info.selectionText); […]

如何从Chrome网上商店下载给定ID的CRX文件?

我想从webstore下载扩展名为.crx的文件,我使用fiddler来分析networking请求,当我从webstore安装扩展,并得到它。 例如,对于扩展程序: https : //chrome.google.com/webstore/detail/bjclhonkhgkidmlkghlkiffhoikhaajg 下载链接是: https://clients2.googleusercontent.com/crx/download/OgAAADQ_Loe5gfVPF2OUaB35tvex-NKlmA8V4K5YlWuvLCknMH7egLLmnMoFuCZePl_idE1GMf8jZC2KbjQqyyLDoDAAxlKa5eDp-z9frOp​​pHWtQsRU3-iGrrrrA/extension_1_7_11.crx 现在我想知道是否有一个扩展名为.crx的通用方法,问题是Google如何encryption bjclhonkhgkidmlkghlkiffhoikhaajg 成 OgAAADQ_Loe5gfVPF2OUaB35tvex-NKlmA8V4K5YlWuvLCknMH7egLLmnMoFuCZePl_idE1GMf8jZC2KbjQqyyLDoDAAxlKa5eDp-z9frOppHWtQsRU3-iGrrrrA 任何想法都将有所帮助。

在某些AJAX调用中出现“net :: ERR_BLOCKED_BY_CLIENT”错误

最近我意识到,一些adblocker扩展(如adBlocker plus)可以阻止一些Ajax调用。 我在控制台上得到这个错误: GET http://localhost/prj/conn.php?q=users/list/ net::ERR_BLOCKED_BY_CLIENT 为什么它阻止了一些Ajax调用,而不是其他的,是什么原因造成的? 除告诉用户closuresadblocker之外,是否有任何解决方法?

在Chrome扩展中获取JSON

我的Chrome扩展的小问题。 我只是想从另一台服务器获取JSON数组。 但是舱单2不允许我这样做。 我试过指定content_security_policy ,但是JSON数组存储在没有SSL证书的服务器上。 那么,我应该怎么做,而不使用清单1?

使用限制性内容安全策略将iframe注入页面

我想创build一个浏览器扩展,它创build一个侧边栏.Chrome没有一stream的侧边栏,所以我们必须在页面中放置一个iframe。 但是,由于内容安全策略,这在许多页面上都会中断。 例如,GitHub使用CSP,它不允许来自其他站点的iframe被embedded其中。 例如,如果您尝试将capitalone.com网站放在GitHub上的iframe中,您将得到以下结果: 拒绝框架“ https://www.capitalone.com/ ”,因为它违反了以下内容安全政策指令:“frame-src”self“render.githubusercontent.com www.youtube.com assets.braintreegateway.com”。 这是一个简单的浏览器扩展来重现: chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { if (changeInfo.status === 'complete') { chrome.tabs.executeScript(tabId, { code: 'document.body.innerHTML=\'<iframe style=\"width:600px; height:600px\" src=\"https://www.capitalone.com/\"></iframe>\' + document.body.innerHTML;' }, function() { console.log('Iframe injection complete'); }) } }.bind(this)); 然而,根据维基百科,浏览器扩展应该能够注入一个iframe,尽pipe有任何内容安全策略: 根据CSP处理模型,[20] CSP不应该干扰用户安装的浏览器插件或扩展的操作。 CSP的这一特性有效地允许任何插件或扩展插入脚本到网站,不pipe脚本的来源如何,从而免除CSP策略。 除了我在做什么之外,还有其他一些方法可以注入iframe吗?

完全失去了如何保存扩展popup窗口的内容

我几乎失去了如何使我的popup窗口的添加内容不会消失,每次我打开一个新的链接或点击它“离开”。 我已经阅读了关于内容脚本,后台脚本之类的东西,但是我不老实地知道如何将其实现到我自己的源代码中。 以下是我的popup.html , popup.js和我的manifest.js文件。 { "manifest_version": 2, "name": "URL_save", "description": "This extension saves an URL and renames the title to the user's wishes and hyperlink the title.", "version": "0.1", "browser_action": { "default_icon": "/img/icon.png", "default_popup": "popup.html", "default_title": "See your saved websites!" }, "permissions": [ "tabs" ] } popup的HTML : <html> <head> <title>Your articles</title> <link href="/css/style.css" […]

在Chrome扩展中的跨源XMLHttpRequest

根据chrome扩展API如果设置了权限,则应该允许使用XMLHttpRequest对象进行跨源调用: 一个扩展可以与远程服务器通信,只要它首先请求跨源许可。 我正在密切关注该教程,但下面的代码给了我一个错误消息: XMLHttpRequest无法加载http://www.google.com/search?hl=zh-CN&q=ajax 。 Origin chrome-extension:// bmehmboknpnjgjbmiaoidkkjfcgiimbo不被Access-Control-Allow-Origin允许。 我不仅允许向google.com发送请求,而且还向任何网站发送请求,但仍然无法通过。 任何人都可以帮忙吗? 我的清单文件: { "name": "The popup", "version": "0.1", "popup": "popup.html", "permissions": [ "http://*/*", "https://*/*", "https://www.google.com/*", "http://www.google.com/*" ], "browser_action": { "default_icon": "clock-19.png", "default_title": "This is title", "default_popup": "popup.html" } } 实际的通话: function sendRequest() { document.write("Sending request"); var req = new XMLHttpRequest(); req.open("GET", "http://www.google.com/search?hl=en&q=ajax", true); req.onreadystatechange = function() […]

UserScripts&Greasemonkey:调用网站的JavaScript函数

我正在为Firefox和Chrome创build一个UserScript扩展,我正在尝试使用网站JavaScript中的一些代码,例如: function: myFunction(){ return Grooveshark.playNextSong(); } 问题是当我testing这个代码时, Grooveshark是一个空引用。 我知道还有其他人已经做到了: 看BetterGrooveshark 但是我不知道为什么我的简单扩展名不能调用Grooveshark的JavaScript函数。 我需要'追加'我的脚本到文件才能这个工作吗?: document.document.body.appendChild(script); Greasemonkey是否已经注入我的扩展JavaScript? 有人能为我澄清这个请。 谢谢。