Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展和gmail.js阻止访问google api_Javascript_Google Chrome Extension_Gmail Api_Gmail.js - Fatal编程技术网

Javascript Chrome扩展和gmail.js阻止访问google api

Javascript Chrome扩展和gmail.js阻止访问google api,javascript,google-chrome-extension,gmail-api,gmail.js,Javascript,Google Chrome Extension,Gmail Api,Gmail.js,我只是在玩基于本教程的chrome扩展 当我出于某种原因使用扩展时,我无法使用gmail.js获取草稿电子邮件的正文 使用gmail.js样板文件 "use strict"; console.log("Extension loading..."); const jQuery = require("jquery"); const $ = jQuery; const GmailFactory = require("gmail-js"); const gmail = new GmailFac

我只是在玩基于本教程的chrome扩展

当我出于某种原因使用扩展时,我无法使用gmail.js获取草稿电子邮件的正文

使用gmail.js样板文件

    "use strict";

console.log("Extension loading...");
const jQuery = require("jquery");
const $ = jQuery;
const GmailFactory = require("gmail-js");
const gmail = new GmailFactory.Gmail($);
window.gmail = gmail;




/*
This code uses the Gmail library to observe emails being sent, turn them into XML,
then return a json data, body, which is put into the request and parsed with ML.
*/

gmail.observe.on("load", () => {
  const userEmail = gmail.get.user_email();
  console.log("Hello, " + userEmail + ". This is your Rhea talking with a new version better loading!!");

  gmail.observe.on("view_email", (domEmail) => {
    console.log("Looking at email:", domEmail);
    const emailData = gmail.new.get.email_data(domEmail);
    console.log("Email data:", emailData);
  });


//var main = function () {

  gmail.observe.on('save_draft', function (id, url, body, xhr) {

    var draftId = url['permmsgid'];

    console.log("draft saved" + draftId)

  });

});
    //
前两个控制台日志工作正常,因此无法确定处理此问题的最佳方法


提前感谢:)

不幸的是,
save\u草稿
观察者似乎在之后不再开火。我自己加载了您的扩展,并确认,
view\u email
事件仍按预期启动,
save\u draft
未启动。Gmail.js的开发者发现另一个事件,
send_email
,与当前版本的Gmail有相同的问题。因此,脚本似乎不像过去那样运行良好

如果您仍想使其正常工作,有以下几种选择:

  • 找到一个备用的Gmail.js事件来代替仍在工作的
    save\u draft
  • 使用其他一些事件处理程序(如JavaScript的标准
    onkeypress)获取
    div.editable
    的内容
  • 卷起袖子,用Gmail.js插件调试这个问题,如果你能找到解决方案,就向它的开发者发送一个请求

编辑:这是一个工作解决方案,使用标准JS事件
按键
单击
以及变异观察者等待字段出现:

"use strict";

console.log("Extension loading...");
const jQuery = require("jquery");
const $ = jQuery;
const GmailFactory = require("gmail-js");
const gmail = new GmailFactory.Gmail($);
window.gmail = gmail;

function logInnerText(e) {
  console.log("New Email Body Text is: " + e.currentTarget.innerText);
}

gmail.observe.on("load", () => {
  const userEmail = gmail.get.user_email();
  console.log("Hello, " + userEmail + ". This is your extension talking!");

  gmail.observe.on("view_email", domEmail => {
    console.log("Looking at email:", domEmail);
    const emailData = gmail.new.get.email_data(domEmail);
    console.log("Email data:", emailData);
  });

  var observer = new MutationObserver(function(mutations) {
    let messageBodyField = document.querySelector("div.editable");
    if (
      messageBodyField &&
      !messageBodyField.getAttribute("data-found-by-my-extension")
    ) {
      messageBodyField.setAttribute("data-found-by-my-extension", true);
      messageBodyField.addEventListener("keydown", logInnerText);
      messageBodyField.addEventListener("click", logInnerText);
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });
});

如果遇到任何性能问题,在检查框是否存在时,可以尝试在低于
document.body
的级别标记内搜索。如果您想进一步解释,请告诉我。

您可以发布一个工作存储库吗?你提供的回购协议甚至不起作用。。。你在使用之前更新过什么吗?谢谢老兄。干得好!使用javascripts onkeypress-有关于使用它来解决问题的文档吗?很高兴这对您有用!仅供参考-如果你想向我发送赏金,你必须手动发送。否则,在12小时内到期时,我只能得到其中的一半,而另一半将被丢弃。:)@MichaelHolborn from:赏金开始后24小时内即可获得赏金。您可以将奖金奖励给任何其他人发布的任何答案,即使是已经获得一个或多个奖金(包括您)的答案。要手动奖励赏金,请单击要奖励的答案左侧的+50(或分配的任何赏金金额)按钮。看起来你已经解决了。非常感谢。我很快会问更多的问题!当我现在将它发送到API时,我遇到了一个错误:(非常奇怪!