我正在尝试从弹出窗口中访问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) 我有一个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) 我有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) 我有一个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
我有一个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 ......
这是双重信息吗?如果是这样,好奇为什么?
如果不是,那么追踪和消除它的最佳方法是什么?
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) 我是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)
那也行不通.
我显然不知道我在做什么,但希望这比它看起来更容易.
谢谢!
我有一个正在加载初始状态的组件:
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调用非常快.
在第一次通话回来之前等待呈现的最佳方式是什么?
我正在研究 Elixir 并希望制作头像服务。如果用户没有头像,想要制作一个带有他们姓名首字母的头像,如下所示:
我真的不知道从哪里开始或如何做到这一点。
我正在构建一个扩展程序,通过将gmail.js注入页面上下文,与Gmail集成并与Gmail集成,如下所示:https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate/blob/master /content.js
这似乎是利用Google嵌入页面的一些全局变量的唯一明显方法.
所以现在,我需要回到扩展的一些功能.在正常情况下(从内容脚本操作),我会向后台脚本发送一条消息,但是甚至可以从选项卡本身的上下文中发送消息吗?
我试图绕着model
财产或路线与content
控制器的属性进行包围.如果model
在路径中设置属性,它是否会自动将其设置content
为生成的控制器中的属性.
另外,我认为content
控制器的属性允许您访问模板中该对象的属性,这是真的吗?
我阅读了文档,但仍然难以消化其中的一些约定.
我正在听自定义事件:
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)
但都没有工作.我究竟做错了什么?
这会导致多个按钮执行操作:
$(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
,但似乎无法把它弄好.有任何想法吗?