小编bra*_*ert的帖子

Chrome扩展程序 - 获取DOM内容

我正在尝试从弹出窗口中访问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"
  }
}
Run Code Online (Sandbox Code Playgroud)

我真的很困惑后台脚本(具有持久性的事件页面:false)或content_scripts是否可行.我已经阅读了所有文档和其他SO帖子,但对我来说仍然没有意义.

有人可以解释为什么我可以使用一个而不是另一个.

这是我一直在尝试的background.js:

chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    // LOG THE CONTENTS HERE
    console.log(request.content);
  }
);
Run Code Online (Sandbox Code Playgroud)

我只是从弹出控制台执行此操作:

chrome.tabs.getSelected(null, function(tab) {
  chrome.tabs.sendMessage(tab.id, { }, function(response) {
    console.log(response);
  });
});
Run Code Online (Sandbox Code Playgroud)

我越来越:

Port: Could not establish connection. Receiving end does not …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

97
推荐指数
3
解决办法
13万
查看次数

React组件不会在状态更改时重新呈现

我有一个React类,它将用于获取内容的API.我已经确认数据会回来,但它不会重新渲染:

var DealsList = React.createClass({
  getInitialState: function() {
    return { deals: [] };
  },
  componentDidMount: function() {
    this.loadDealsFromServer();
  },
  loadDealsFromServer: function() {
    var newDeals = [];

    chrome.runtime.sendMessage({ action: "findDeals", personId: this.props.person.id }, function(deals) {
      newDeals = deals;
    });

    this.setState({ deals: newDeals });
  },
  render: function() {
    var dealNodes = this.state.deals.map(function(deal, index) {
      return (
        <Deal deal={deal} key={index} />
      );
    });
    return (
      <div className="deals">
        <table>
          <thead>
            <tr>
              <td>Name</td>
              <td>Amount</td>
              <td>Stage</td>
              <td>Probability</td>
              <td>Status</td>
              <td>Exp. Close</td>
            </tr>
          </thead>
          <tbody>
            {dealNodes}
          </tbody>
        </table> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

29
推荐指数
6
解决办法
7万
查看次数

React引用组件

我有React表单,它有一个用于呈现下拉列表的Component,因为选项来自API.但是,我无法访问嵌入式组件的参考.我正在整理我的第一个表格并试图了解解决这个问题的最佳方法.

var ActivityForm = React.createClass({
  handleSubmit: function(e) {
    e.preventDefault();

    var noteCategoryId = this.refs.note_category_id.getDOMNode().value.trim();
    var content = this.refs.content.getDOMNode().value.trim();

    if (!category || !content) {
      return;
    }

    // this.props.onCommentSubmit({author: author, text: text});

    this.refs.note_category_id.getDOMNode().value = '';
    this.refs.content.getDOMNode().value = '';
    return;
  },
  render: function() {
    return (
      <div className="new-activity">
        <h3>New Activity</h3>
        <form onSubmit={this.handleSubmit}>
          <textarea ref='content' />
          <br />

          <label>Category</label>
          <ActivityFormCategoryDropdown /> # THE REF IN THIS COMPONENT ISN'T ACCESSIBLE
          <br />

          <input type="submit" value="Add Activity" />
        </form>
      </div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

16
推荐指数
2
解决办法
4万
查看次数

长期以来,VIM真的很慢

我有一个624行Yaml文件,在vim中完全无法使用.

这是我的配置:https://github.com/brandonhilkert/dotfiles/blob/master/vim/vimrc

如果我运行"语法关闭"如果工作正常,但显然不突出显示.有没有办法改善这个?

没有一行是那么长:https://dzwonsemrish7.cloudfront.net/items/00391q2h0T0z0K0o3A1y/Screen%20Shot%202013-12-18%20at%2011.17.48%20AM.png?v=6532af86

macos vim iterm2

12
推荐指数
1
解决办法
3040
查看次数

React.js - componentWillReceiveProps被击中两次

我有一个React.js组件,它被渲染如下:

    <Social email={this.state.email} />;
Run Code Online (Sandbox Code Playgroud)

页面上有一些事件会更新this.state.email,因此会通过渲染,它会向组件发送新的email道具Social.

在这个Social组件中,我正在倾听这样的更新:

  componentWillReceiveProps: function(nextProps) {
    console.log('received props update', nextProps.email);
    this.doSomeWork();
  }
Run Code Online (Sandbox Code Playgroud)

该控制台线被渲染两次,这使得UI闪烁两次以及对社交网络的调用.

我总是可以这样做:

    if (nextProps.email != this.props.email) {
      this.doSomeWork();
    }
Run Code Online (Sandbox Code Playgroud)

但它感觉有点hacky ......

这是双重信息吗?如果是这样,好奇为什么?

如果不是,那么追踪和消除它的最佳方法是什么?

javascript reactjs

12
推荐指数
1
解决办法
2万
查看次数

Rails夹具关系不存在

Rails 4.1应用程序.我能够解决它,但感兴趣的是它为什么不起作用:

class NotificationSettings < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_one :notification_settings
end
Run Code Online (Sandbox Code Playgroud)

这不起作用:

# test/fixtures/notification_settings.yml

wilmas_notification_settings:
  user: wilma
  checkin_comments: false
  checkin_comments_schedule: instant
Run Code Online (Sandbox Code Playgroud)

这个工作:

# test/fixtures/notification_settings.yml

wilmas_notification_settings:
  user_id: wilma
  checkin_comments: false
  checkin_comments_schedule: instant
Run Code Online (Sandbox Code Playgroud)

一切都指向它是一个问题belongs_to,但我很困惑.

错误是:

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "user" of relation "notification_settings" does not exist
LINE 1: INSERT INTO "notification_settings" ("user", "checkin_commen...
                                             ^
: INSERT INTO "notification_settings" ("user", "checkin_comments", "checkin_comments_schedule") VALUES (550831404, 'f', 'instant')
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4

6
推荐指数
1
解决办法
861
查看次数

使用Npm模块时的jQuery插件

我是Npm软件包(来自Ruby)的新手,并试图加载一个不一定在NPM上的jQuery插件.我正在构建Chrome扩展程序.下面的代码正在content.js被注入浏览器的脚本中使用.因此,格式化和日期选择器等组件是可取的.

在我的应用程序文件的顶部,我有以下内容:

var React = require("react");
var $ = require("jquery");
var moment = require("moment");
Run Code Online (Sandbox Code Playgroud)

一切正常,但现在我想添加一个插件,我不太确定在哪里放它以及如何让它可以访问应用程序.我试过加载它就像:

var React = require("react");
var $ = require("jquery");
require("./jquery-datepicker");
var moment = require("moment");
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它无法$在脚本中找到.那么我试过:

require("./jquery-datepicker")($);
Run Code Online (Sandbox Code Playgroud)

那也行不通.

我显然不知道我在做什么,但希望这比它看起来更容易.

谢谢!

javascript jquery node.js

5
推荐指数
1
解决办法
3851
查看次数

在请求之后按住React Render

我有一个正在加载初始状态的组件:

  getInitialState: function() {
    return {
      panel: "deals",
      showExtension: false,
      person: {}

    };
  },
Run Code Online (Sandbox Code Playgroud)

我有这个找人:

  componentDidMount: function() {
    this.findPersonFromBackground();
  },
  findPersonFromBackground: function() {
    chrome.runtime.sendMessage({ action: "findPerson", email: this.props.currentEmail.from_email }, function(person) {
      this.setState({person: person});
    }.bind(this));
  },
Run Code Online (Sandbox Code Playgroud)

所以一切正常.如果找到了这个人,我会渲染一件事,如果不是,那就是其他东西.

当找到第一个时,视图从非找到状态变为快速找到状态,因为API调用非常快.

在第一次通话回来之前等待呈现的最佳方式是什么?

javascript reactjs

5
推荐指数
2
解决办法
2713
查看次数

使用 Elixir 生成首字母头像

我正在研究 Elixir 并希望制作头像服务。如果用户没有头像,想要制作一个带有他们姓名首字母的头像,如下所示:

在此处输入图片说明

我真的不知道从哪里开始或如何做到这一点。

elixir phoenix-framework

4
推荐指数
1
解决办法
1190
查看次数

Gmail扩展程序,sendMessage从页面上下文到后台

我正在构建一个扩展程序,通过将gmail.js注入页面上下文,与Gmail集成并与Gmail集成,如下所示:https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master /content.js

这似乎是利用Google嵌入页面的一些全局变量的唯一明显方法.

所以现在,我需要回到扩展的一些功能.在正常情况下(从内容脚本操作),我会向后台脚本发送一条消息,但是甚至可以从选项卡本身的上下文中发送消息吗?

javascript gmail google-chrome google-chrome-extension

3
推荐指数
2
解决办法
2208
查看次数

Ember.js路由器/控制器属性

我试图绕着model财产或路线与content控制器的属性进行包围.如果model在路径中设置属性,它是否会自动将其设置content为生成的控制器中的属性.

另外,我认为content控制器的属性允许您访问模板中该对象的属性,这是真的吗?

我阅读了文档,但仍然难以消化其中的一些约定.

javascript ember.js ember-router

2
推荐指数
1
解决办法
6542
查看次数

删除自定义事件侦听器

我正在听自定义事件:

evt = new CustomEvent("fileThisEmail", {
  detail: {
    name: name,
    email: email,
    content: content
  }
});

window.dispatchEvent(evt);


window.addEventListener("fileThisEmail", this.handleFileEmail);
Run Code Online (Sandbox Code Playgroud)

我需要删除监听器.我试过了:

window.removeEventListener("fileThisEmail", this.handleFileEmail);
window.removeEventListener("fileThisEmail");
Run Code Online (Sandbox Code Playgroud)

但都没有工作.我究竟做错了什么?

javascript event-handling javascript-events

2
推荐指数
1
解决办法
2831
查看次数

第一次点击后jQuery取消绑定

这会导致多个按钮执行操作:

$(document).on("click", ".file-this-email", fileThisEmail);
Run Code Online (Sandbox Code Playgroud)

fileThisEmail运行时,我想只从当前删除它(还有其他的网页上仍然需要它):

window.fileThisEmail = function(e) {
  console.log('this was clicked');
}
Run Code Online (Sandbox Code Playgroud)

我试过了off,但似乎无法把它弄好.有任何想法吗?

javascript jquery javascript-events

-1
推荐指数
1
解决办法
101
查看次数