GVKun编程网logo

Chrome扩展程序-从网页检索全局变量(chrome全局搜索)

23

在本文中,我们将带你了解Chrome扩展程序-从网页检索全局变量在这篇文章中,我们将为您详细介绍Chrome扩展程序-从网页检索全局变量的方方面面,并解答chrome全局搜索常见的疑惑,同时我们还将给

在本文中,我们将带你了解Chrome扩展程序-从网页检索全局变量在这篇文章中,我们将为您详细介绍Chrome扩展程序-从网页检索全局变量的方方面面,并解答chrome全局搜索常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Chrome 扩展 - 从网页中检索全局变量、Chrome扩展程序 – 消息传递到batch file、Chrome扩展程序-浏览次数最多的网站列表、Chrome扩展程序-获取DOM内容

本文目录一览:

Chrome扩展程序-从网页检索全局变量(chrome全局搜索)

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 扩展 - 从网页中检索全局变量

我正在开发 Chrome 的扩展程序。我希望解析“原始”Gmail 邮件(当前查看的邮件)的内容。

我尝试使用 jQuery.load() 如下

$(windows).load(function() { alert(GLOBALS); });

并将其放在内容脚本中,但它也不起作用。我正在使用 Chrome 的开发人员工具,它在调用alert(GLOBALS);

未捕获的 ReferenceError:未定义 GLOBALS

虽然,当使用开发人员工具的控制台时,在控制台中输入GLOBALS它会返回一个数组。

任何线索如何从内容脚本访问 GLOBALS?

Chrome扩展程序 – 消息传递到batch file

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扩展程序-浏览次数最多的网站列表?

我有一个chrome扩展名,我想使用用户访问量最大的站点,将该对象发送到MysqL中的数据库。

我知道在我的background.js文件中,使用此

chrome.topSites.get(function callback)

应该做的工作。用户登录后,如何每周在扩展中发送一次这些数据?

我认为它会是类似get(array),获取对象,发送到带有计时器的db?

我通常会怎么做?尝试解决这个问题,文档非常糟糕,而且我想自动进行其他操作,然后使用扩展名上的按钮触发。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Chrome扩展程序-获取DOM内容

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内容的相关信息,请在本站查询。

本文标签: