Tag: 谷歌铬扩展

如何testingChrome扩展?

有没有一个好的方法来做到这一点? 我正在编写一个扩展,作为内容脚本与网站交互,并使用localstorage保存数据。 有什么工具,框架等,我可以用来testing这种行为? 我意识到有一些testingJavaScript的通用工具,但那些足够的能力来testing扩展? unit testing是最重要的,但我也对其他types的testing感兴趣(如集成testing)。

谷歌铬扩展:: console.log()从后台页面?

如果我打电话给console.log('something'); 从popup页面,或包括任何脚本,它工作正常。 但是,由于背景页面不是直接从popup页面运行,所以不包含在控制台中。 有没有办法,我可以得到console.log()在后台页面显示在控制台的popup页面? 有没有办法从背景页面调用popup页面中的一个函数?

在Chrome中模拟有限的带宽?

有没有一种方法可以模拟Chrome内部的各种连接速度? 我需要能够以不同的速度检查http:// localhost 。 我知道有独立的应用程序可以做到这一点,但我宁愿在Chrome中做这个。

有没有办法在谷歌浏览器中获取xpath?

我有一个我想用YQL的网页。 但是我需要一个特定项目的xpath。 我可以在谷歌浏览器的debugging工具区域看到它,但我没有看到复制该xpath的方法。 有没有办法复制一个完整的XPath或扩展来做到这一点?

使用后台页面的跨域XMLHttpRequest

在我的Chrome扩展中,我想让我的options.html页面与Google的OpenId API进行通信。 为了做到这一点,我在选项页面上隐藏了一个iframe ,它将popupGoogle帐户login页面(遵循OpenId交互序列等)。 我的问题是,我不能通过window.postMessage从选项页面到iframe ( iframe的起源是我控制的,但不是我的铬扩展)。 我想知道是否有一个快速解决这个问题。 如果没有,我将使options.html包含一个iframe ,其中包含页面的布局和逻辑。

谷歌浏览器扩展:如何在程序化注入的内容脚本中包含jQuery?

当用户点击浏览器动作button时,我从后台页面注入我的内容脚本 ,如下所示: chrome.browserAction.onClicked.addListener(function (tab) { chrome.tabs.executeScript(null, { file: "content.js" }); }); 那么我怎样才能从我的content.js访问jQuery? 我没有看到同时注入的方法。

在Chrome中停用开发者模式扩展程序

自从上周发布最新版本的Chrome(34.0.1847.116)以来,在使用watir-webdriver运行自动化testing时,我一直在收到“禁用开发者模式扩展”。 这似乎是进攻的延伸,但对我来说,这是一个潜在的危险的扩展,因为它被使用的铬绿色驱动程序。 任何人已经find了解决这个问题,因为我无法回滚到以前的版本,或find一个旧版本的安装程序回滚,这是对我的testing的破坏。

Chrome扩展程序中的popup窗口

我正在编写Chrome扩展,当用户点击上下文菜单时,我想要popup一个login窗口,以便用户input用户名和密码。 在Chrome扩展中,我只发现了chrome.pageAction.setPopup和chrome.browserAction.setPopup可以用来显示popup窗口,但是只有当页面动作的图标或者浏览器动作的图标被点击时,才会popup窗口,而不是上下文菜单。 当然,我可以使用javascript提示框来做到这一点,但问题是密码不能在提示框中被屏蔽。 所以我想知道是否有其他的方式来在Chrome扩展中创build一个popup窗口。 谢谢!

有没有一种方法来唯一标识内容脚本运行在我的Chrome扩展的iframe?

在我的Chrome扩展中,我将内容脚本注入到页面内的所有IFRAMEs 。 这是manifest.json文件的一部分: "content_scripts": [ { "run_at": "document_end", "all_frames" : true, "match_about_blank": true, "matches": ["http://*/*", "https://*/*"], "js": ["content.js"] } ], 因此,一个具有多个IFRAMEs网页将最终运行我注入content.js许多副本。 content.js的逻辑从其注入的每个IFRAME收集数据,或从主/首页收集数据,并将其发送回后台脚本 (使用chrome.runtime.sendMessage )。 后台脚本又需要存储数据在全局variables中,稍后在扩展中使用。 我面临的问题是,应用程序需要区分从多个IFRAMEs接收到的“数据”,因为我的数据收集方法可以在用户与页面交互时重复调用,因此我不能简单地“转储”收到的数据由后台脚本变成一个数组。 相反,我需要使用dictionary典型的数据存储。 我可以通过运行以下命令来判断数据是来自IFRAME还是来自顶部页面: //From the `content.js` var isIframe = window != window.top; 我的想法是,如果我收集每个IFRAME页面URL,那么我应该可以把它作为一个唯一的键来存储在我的字典型全局variables下的数据: //Again from content.js var strUniqueIFrameURL = document.URL; 那么,这是行不通的,因为两个或更多的IFRAMEs可以有相同的URL。 所以,我的原始问题 – 如何分辨页面上的IFRAMEs ? Chrome是否分配给他们一些独特的ID或某些信息?

通过chrome扩展将file upload为表单数据

我通过Chrome扩展上传文件作为表单数据,我的代码如下所示。 这里的问题是,文件浏览窗口打开了一秒钟,然后消失。 该问题仅在Mac OS中出现。 manifest.json的: "background": { "scripts": ["jszip.js", "background.js"] }, background.js: chrome.runtime.onMessage.addListener(function (msg) { if (msg.action === 'browse') { var myForm=document.createElement("FORM"); var myFile=document.createElement("INPUT"); myFile.type="file"; myFile.id="selectFile"; //myFile.onclick="openDialog()"; myForm.appendChild(myFile); var myButton=document.createElement("INPUT"); myButton.name="submit"; myButton.type="submit"; myButton.value="Submit"; myForm.appendChild(myButton); document.body.appendChild(myForm); } }); popup.js: window.onload = function () { chrome.runtime.sendMessage({ action: 'browse' }); }