在本文中,我们将带你了解Chrome扩展程序-从网页检索全局变量在这篇文章中,我们将为您详细介绍Chrome扩展程序-从网页检索全局变量的方方面面,并解答chrome全局搜索常见的疑惑,同时我们还将给
在本文中,我们将带你了解Chrome扩展程序-从网页检索全局变量在这篇文章中,我们将为您详细介绍Chrome扩展程序-从网页检索全局变量的方方面面,并解答chrome全局搜索常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Chrome 扩展 - 从网页中检索全局变量、Chrome扩展程序 – 消息传递到batch file、Chrome扩展程序-浏览次数最多的网站列表、Chrome扩展程序-获取DOM内容。
本文目录一览:- Chrome扩展程序-从网页检索全局变量(chrome全局搜索)
- Chrome 扩展 - 从网页中检索全局变量
- Chrome扩展程序 – 消息传递到batch file
- Chrome扩展程序-浏览次数最多的网站列表
- Chrome扩展程序-获取DOM内容
Chrome扩展程序-从网页检索全局变量(chrome全局搜索)
我正在为Chrome扩展程序。我希望解析“原始” Gmail邮件(当前查看的邮件)的内容。
我试图利用jQuery.load()如下
$(windows).load(function() { alert(GLOBALS); });
并将其放置在内容脚本中,但是它也不起作用。我正在使用Chrome的开发人员工具,该工具会在调用时返回以下错误alert(GLOBALS);
未被捕获的ReferenceError:未定义GLOBALS
尽管在使用开发人员工具的控制台时,在控制台中键入GLOBALS
它会返回一个数组。
有什么线索如何从内容脚本访问GLOBALS吗?
答案1
小编典典内容脚本在隔离的环境中运行。要访问(页面的window
)任何全局属性,您必须注入一个新<script>
元素,或使用事件侦听器来传递数据。
有关在页面上下文中注入元素的示例,请参见此答案<script>
。
例
contentscript.js ("run_at": "document_end"
清单中):
var s = document.createElement(''script'');s.src = chrome.extension.getURL(''script.js'');(document.head||document.documentElement).appendChild(s);s.onload = function() { s.remove();};// Event listenerdocument.addEventListener(''RW759_connectExtension'', function(e) { // e.detail contains the transferred data (can be anything, ranging // from JavaScript objects to strings). // Do something, for example: alert(e.detail);});
script.js
-位于扩展目录中,这将被注入页面本身:
setTimeout(function() { /* Example: Send data from the page to your Chrome extension */ document.dispatchEvent(new CustomEvent(''RW759_connectExtension'', { detail: GLOBALS // Some variable from Gmail. }));}, 0);
由于此文件是通过DOM中的chrome-extension:URL加载的,因此必须将“
script.js”添加到清单文件的web_accessible_resources部分。否则,Chrome将拒绝加载脚本文件。
您应该在网页中运行尽可能少的逻辑,并在内容脚本中处理大部分逻辑。这有多个原因。首先,页面中注入的任何脚本都在与网页相同的上下文中运行,因此,网页可以(有意或无意)修改JavaScript
/ DOM方法,以使扩展程序停止工作。其次,内容脚本可以访问其他功能,例如chrome。*
API的有限子集和跨域网络请求(前提是扩展程序已声明了这些功能的许可)。
Chrome 扩展 - 从网页中检索全局变量
我正在开发 Chrome 的扩展程序。我希望解析“原始”Gmail 邮件(当前查看的邮件)的内容。
我尝试使用 jQuery.load() 如下
$(windows).load(function() { alert(GLOBALS); });
并将其放在内容脚本中,但它也不起作用。我正在使用 Chrome 的开发人员工具,它在调用alert(GLOBALS);
未捕获的 ReferenceError:未定义 GLOBALS
虽然,当使用开发人员工具的控制台时,在控制台中输入GLOBALS
它会返回一个数组。
任何线索如何从内容脚本访问 GLOBALS?
Chrome扩展程序 – 消息传递到batch file
我使用示例项目https://developer.chrome.com/extensions/samples我能够运行python原生应用程序。
在native-messaging-example-host.bat中有没有办法获取消息?
我不想加载python脚本
我想要做的是从chrome {text:“xyz.bat”}发送消息
发送消息到其他进程
在UNIX中,如何通过IP地址将消息发送到同一networking上的另一个UNIX框?
Windows上的消息传递接口(MPI)
如何在Linux中select进程间通信的“关键”?
如何使用PostThreadMessage从C ++closuresInternet Explorer
并且该batch file应该运行START xyz.bat
如何通知Windows有关桌面设置的更改?
您不应该从批处理文件的角度来处理这个问题,因为这代替了我的解决方案,它需要程序先行运行,而在大多数应用程序中,这种方式已被折旧,以便在后台运行。 但是,如果你仍然想知道你怎么可能批量做…
如果你可以将消息传递给一个空白的html页面(目前不知道你是怎么做的或者想要这样做的话),那么这个html页面上唯一的东西是你的runme.bat我们可以运行一个程序来复制页面,打开一个文本文件并粘贴进去,关闭文本文件,然后运行带有输入的批处理文件。 所以编码明智,
@if (@CodeSection == @Batch) @then @echo off set SendKeys=CScript //nologo //E:JScript "%~F0" rem below copys everything on the page,and closes it %sendKeys% "{TAB}" %sendKeys% "^{A}" %sendKeys% "^{C}" %sendKeys% "^{W}" rem open text file,wait for it load,paste clipboard,save and exit start newreadforme.txt timeout /nobreak /t 5 %sendKeys% "^{V}" %sendKeys% "^{S}" timeout /nobreak /t 2 %sendKeys% "^{W}" start program.bat goto :EOF @end // JScript section var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.SendKeys(WScript.Arguments(0));
然后在你的批处理文件中
@echo off set /px=<newreadforme.txt start %x%
此代码将在打开的页面上运行模拟击键,以复制其内容并将其转发到另一个批文件中引用的文本文件。 但是,你只应该使用这种方法作为最后的手段,因为这种方法是一个可怕的方式来解决你的问题。 我的代码要求您保持网页的开放性,并确保在执行过程中没有人干涉该程序。 所以如果用户在使用电脑的时候运行,那么他们可能会不小心混淆了输入。
最重要的是,您已经需要修改网页来达到最终效果,所以您可能应该使用支持html的语言来进行文件系统操作 。 Nodejs可以提供一个你可能决定通过的文件系统和html页面之间的一个很好的接口 。 如何处理填充了我不确定的消息的网页, 但是您绝对应该避免使用批处理来执行您要求的更多HTML友好语言
Chrome扩展程序-浏览次数最多的网站列表
如何解决Chrome扩展程序-浏览次数最多的网站列表?
我有一个chrome扩展名,我想使用用户访问量最大的站点,将该对象发送到MysqL中的数据库。
我知道在我的background.js文件中,使用此
chrome.topSites.get(function callback)
应该做的工作。用户登录后,如何每周在扩展中发送一次这些数据?
我认为它会是类似get(array),获取对象,发送到带有计时器的db?
我通常会怎么做?尝试解决这个问题,文档非常糟糕,而且我想自动进行其他操作,然后使用扩展名上的按钮触发。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Chrome扩展程序-获取DOM内容
如何解决Chrome扩展程序-获取DOM内容?
术语“背景页面”,“弹出窗口”,“内容脚本”仍然让您感到困惑;我强烈建议您更深入地了解 。
关于您的问题,内容脚本或后台页面是不是要走的路:
:绝对地, 内容脚本是扩展程序中有权访问网页DOM的唯一组件。
:也许(可能最多两个)之一,您可能需要让内容脚本将DOM内容传递给后台页面或弹出窗口以进行进一步处理。
让我重复一遍,我强烈建议您对可用文档进行更仔细的研究!就是说,这里是一个示例扩展,它检索StackOverflow页面上的DOM内容并将其发送到后台页面,然后在控制台中将其打印出来:
// Regex-pattern to check URLs against.
// It matches URLs like: http[s]://[...]stackoverflow.com[...]
var urlRegex = /^https?:\/\/(?:[^./?#]+\.)?stackoverflow\.com/;
// A function to use as callback
function doStuffWithDom(domContent) {
console.log(''I received the following DOM content:\n'' + domContent);
}
// When the browser-action button is clicked...
chrome.browserAction.onClicked.addListener(function (tab) {
// ...check the URL of the active tab against our pattern and...
if (urlRegex.test(tab.url)) {
// ...if it matches, send a message specifying a callback too
chrome.tabs.sendMessage(tab.id, {text: ''report_back''}, doStuffWithDom);
}
});
// Listen for messages
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
// If the received message has the expected format...
if (msg.text === ''report_back'') {
// Call the specified callback, passing
// the web-page''s DOM content as argument
sendResponse(document.all[0].outerHTML);
}
});
{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
...
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"content_scripts": [{
"matches": ["*://*.stackoverflow.com/*"],
"js": ["content.js"]
}],
"browser_action": {
"default_title": "Test Extension"
},
"permissions": ["activeTab"]
}
解决方法
我正在尝试从弹出窗口访问activeTab DOM内容。这是我的清单:
{
"manifest_version": 2,"name": "Test","description": "Test script","version": "0.1","permissions": [
"activeTab","https://api.domain.com/"
],"background": {
"scripts": ["background.js"],"persistent": false
},"content_security_policy": "script-src ''self'' ''unsafe-eval''; object-src ''self''","browser_action": {
"default_icon": "icon.png","default_title": "Chrome Extension test","default_popup": "index.html"
}
}
我真的很困惑,背景脚本(持久性事件页:false)还是content_scripts是可行的方法。我已经阅读了所有文档和其他SO帖子,但对我来说仍然没有意义。
有人可以解释为什么我可能会用另一个。
这是我一直在尝试的background.js:
chrome.extension.onMessage.addListener(
function(request,sender,sendResponse) {
// LOG THE CONTENTS HERE
console.log(request.content);
}
);
我只是从弹出控制台执行此操作:
chrome.tabs.getSelected(null,function(tab) {
chrome.tabs.sendMessage(tab.id,{ },function(response) {
console.log(response);
});
});
我越来越:
Port: Could not establish connection. Receiving end does not exist.
更新:
{
"manifest_version": 2,"name": "test","description": "test","permissions": [
"tabs","activeTab","content_scripts": [
{
"matches": ["<all_urls>"],"js": ["content.js"]
}
],"default_title": "Test","default_popup": "index.html"
}
}
content.js
chrome.extension.onMessage.addListener(
function(request,sendResponse) {
if (request.text && (request.text == "getDOM")) {
sendResponse({ dom: document.body.innertHTML });
}
}
);
popup.html
chrome.tabs.getSelected(null,{ action: "getDOM" },function(response) {
console.log(response);
});
});
当我运行它时,我仍然遇到相同的错误:
undefined
Port: Could not establish connection. Receiving end does not exist. lastError:30
undefined
我们今天的关于Chrome扩展程序-从网页检索全局变量和chrome全局搜索的分享已经告一段落,感谢您的关注,如果您想了解更多关于Chrome 扩展 - 从网页中检索全局变量、Chrome扩展程序 – 消息传递到batch file、Chrome扩展程序-浏览次数最多的网站列表、Chrome扩展程序-获取DOM内容的相关信息,请在本站查询。
本文标签: