我正在构建一个非常简单的灯箱脚本; 单击按钮时,将创建灯箱.当您单击灯箱背景时,它将被删除.
第一次调用该函数时它工作得很好.点击按钮,灯箱显示,点击灯箱,它就会消失.但是,如果您尝试单击"再次"按钮,则不会发生任何操作 - 不会调用div.没有控制台错误或任何东西,不知道是什么问题.
JSFIDDLE http://jsfiddle.net/3fgTC/
码
function closeLightBox(){
document.body.removeChild(lightBox);
}
function createElem(){
var elem = "<div id='lightBox'></div>";
var bodyElem = document.body;
bodyElem.innerHTML = elem + bodyElem.innerHTML;
var lightBox = document.getElementById("lightBox");
lightBox.style.width = "100%";
lightBox.style.height = "800px";
lightBox.style.backgroundColor = "rgba(0,0,0,.5)";
lightBox.onclick = function(){
closeLightBox();
}
}
var button = document.getElementsByClassName("btn");
for (var i = 0; i<button.length; i++){
button[i].onclick = function(){
createElem();
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在建造一个刮刀,Node.js并且遇到了一个小问题.我正在尝试构建一个获取元素文本的函数,无论它是嵌入到<p>标记中,<span>还是嵌入到<div>文本内部.
以下内容目前仅适用于<p>标记中包含的文本:
function getDescription(product){
var text =[];
$('.description *')
.each(function(i, elem) {
var dirty = $(this).text();
var clean = sanitize(dirty).trim();
if (clean.length){
text.push(clean);
}
});
text.join(',');
sanitize(text).trim();
return text;
}
Run Code Online (Sandbox Code Playgroud)
这适用于这样的代码:
<div class="description">
<p>Test test test</p>
</div>
Run Code Online (Sandbox Code Playgroud)
但不适用于此:
<div class="description">
Test test test
</div>
Run Code Online (Sandbox Code Playgroud)
作为参考,sanitize和trim函数是其中的一部分Node Validator,但这与我的问题并不特别相关 - 它们只是取一个字符串并从中删除空格.
关于如何使一个功能适用于BOTH实例的任何想法?为了增加对伤害的侮辱,我稍微有点限制node使用cheerio库来复制某些功能jQuery,但不是全部.
我有一个单击元素时调用的函数.
function showHide(elem){
var clickedText = elem.getElementsByTagName("p");
clickedText.style.color = "green";
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到了一个Uncaught TypeError: Cannot set property 'color' of undefined.但是,如果我这样做console.log(clickedText),请记录相应的
标签.不能为我的生活弄清楚为什么这不起作用,我错过了一些完全明显的东西吗?
如果我有两个这样的DOM元素:
<img id="test1" src="xyz" />
<a id="test2" href="#">Test 2</a>
我在jQuery中选择它们是这样的:
$('#test1') 和 $('#test2')
我希望能够返回img和a分别.使用vanilla Javascript或jQuery,最好的方法是什么?
我的应用程序在NodeJS,ExpressJS和AngularJS上运行.我正在尝试使用PassportJS进行Facebook身份验证.为了避免发布一堆不必要的代码,让我们假设Passport代码按预期工作并登录到Facebook,抓取令牌并收到响应.
在ExpressJS中,我的路由设置如下:
app.get('/', routes.index);
app.get('/fbauth', passport.authenticate('facebook', { scope: 'email' }));
app.get('/fbauthed', passport.authenticate('facebook',{ failureRedirect: '/' }), routes.loggedin);
app.get('/logout', function(req, res) {
req.logOut();
res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)
我的服务器设置为localhost:3000.
题
我的问题是Angular完全没有表现出来.当我在我的页面上放置一个链接href="/fbauth"(这转到localhost:3000/fbauth)时,我看到地址栏改变localhost:3000/fbauth为一瞬间,然后我的localhost:3000主页重新加载.
但是,如果我输入localhost:3000/fbauth地址栏,验证就会发生,我会传递给Facebook - > localhost:3000/fbauthed.
我认为这是因为Angular路由试图"接管" <a>链接中的URL ,但我不知道如何实现它.我已经尝试将我的Angular路由配置为:
when('/fbauth', {
redirectTo: '/fbauth'
}).
Run Code Online (Sandbox Code Playgroud)
但这会加载一个空白屏幕.我怎样才能让两者一起工作?
我有一个看起来像这样的字符串(很多空格,这就是它在我的服务器上的出现方式):
var care_description = "MATERIAL\r\n \r\n 56% Acrylic, 24% Rayon, 20% Polyester\r\n \r\n CARE\r\n \r\n Machine Wash, Gentle Or Delicate"
Run Code Online (Sandbox Code Playgroud)
我正在使用新的Angular 1.2.0ngBindHtml并在我的控制器中处理它,如下所示:
$scope.care = $sce.trustAsHtml(care_description);
Run Code Online (Sandbox Code Playgroud)
(该$scope.records[i].accordions数组只是Angular-Bootstrap的Accordions模块的包装器).
当我将它放入我的视图(通过一个简单的<p ng-bind-html="care"></p>)时,它会像这样呈现:
MATERIAL 56% Acrylic, 24% Rayon, 20% Polyester CARE Machine Wash, Gentle Or Delicate
Run Code Online (Sandbox Code Playgroud)
它应该是:
MATERIAL
56% Acrylic, 24% Rayon, 20% Polyester
CARE
Machine Wash, Gentle Or Delicate
Run Code Online (Sandbox Code Playgroud)
这里唯一的解决方案是让我做一个正则表达式替换来查找所有实例\r\n并替换它们<br />吗?
编辑:我应该提到,虽然HTML上面的例子中没有标签,但通常会有这样我需要在ngBindHtml这里使用而不是<pre>标签.
我有这样的javascript查询,用于检查undefined数组和empty数组:
if(array){
if(array.length > 0){
function1();
}else{
function2();
}
}else{
function2();
}
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西
if(array && ( array.length > 0)){
function1();
}else{
function2();
}
Run Code Online (Sandbox Code Playgroud)
但没有骰子,得到一个variable is undefined错误.根据这个答案做if(variable)作品只是罚款这种用例,但字符串,而不是数组这仅适用.在这样的情况下,有没有办法在javascript中做二合一?
我无法绕过Chrome扩展程序的结构。
我的扩展程序有两个不同的部分:
它使用后台页面通过oAuth登录,然后从oAuth整理大量数据并将其保存到chrome.storage.local。
浏览网页时,它会调用来chrome.storage.local检查当前域是否与从oAuth存储的信息匹配,如果匹配,则使用[Rich Notifications API][1]
我的结构manifest.json很糟糕。
{
"name": "API Test",
"version": "3.1.2",
"manifest_version": 2,
"minimum_chrome_version": "29",
"app": {
"background": {
"scripts": ["main.js"]
}
},
"permissions": ["identity", "storage", "*://*/*"],
"oauth2": {
"client_id": "<<client_id>>",
"scopes": [
"https://www.googleapis.com/auth/plus.login",
"https://www.google.com/m8/feeds",
"https://www.googleapis.com/auth/contacts.readonly"
]
},
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["domchecker.js"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这样做时,我从Chrome收到以下错误:
There were warnings when trying to install this extension:
'content_scripts' is only allowed for extensions and
legacy packaged apps, but this is …Run Code Online (Sandbox Code Playgroud) 我是Chrome扩展程序/自动下载的新手.我有一个背景页面,其中包含可见网页的屏幕截图chrome.tabs.captureVisibleTab().在我的弹出窗口中,我有:
chrome.tabs.captureVisibleTab(null, {}, function (image) {
// Here I want to automatically download the image
});
Run Code Online (Sandbox Code Playgroud)
我已经做了类似的事情blob,但我完全不知道如何下载图像以及如何自动完成.
在实践中,我希望我的Chrome扩展程序能够在加载特定页面时自动截图+下载图像(我猜这必须通过让我的内容脚本与我的后台页面对话来实现,对吗?)
我正在调用Google表格API中的数据,每行的内容如下所示:
{
$t: "title: Test Title, gamelabel: Test Game, startdate: 2016-06-14"
}
Run Code Online (Sandbox Code Playgroud)
是否有任何现成的/简单的方法将此字符串转换为此格式的javascript对象?
{
title : 'Test Title',
gamelabel: 'Test Game',
startdate: '2016-06-14
}
Run Code Online (Sandbox Code Playgroud)
注意,键需要是动态的(为表单的标题创建键),因此无法准确知道键将在哪些键中$t.
更新:使用JSON.parse()在这里不起作用,我想通过以下方式实现此目的有一种hacky-ish方式:
var temp = {};
var params = $t.split(/:/g);
for(var i = 0; i<params.length; i += 2){
temp[params[i].trim()] = params[i + 1].trim();
}
Run Code Online (Sandbox Code Playgroud)
这实际上不适用于提供的格式/可能是一个开始,但我不知道这里的最佳做法是什么.
我有一个基于Express的Node应用程序,它使用Web scraper加载和解析数据.
我已经阅读了很多关于NodeJS的可扩展性以及能够处理一堆并发连接的内容,但是当你运行一个web scraper(发送1000多个并发请求)时,我觉得事情开始崩溃了一点.
运行时,我的服务器对其他API请求没有响应,并且一次运行多个实例会导致速度降低到蜗牛的速度.
我找不到任何关于限制是什么,它们应该是什么,我应该聚集在一起的请求数等等的文档.
我应该将刮刀的要求限制为每秒10次吗?每秒100?每秒1000?或者我可能会增加在我的VPS上分配给我的节点进程的CPU /内存量?
编辑:对于那些投票结束的人,因为这个问题太基于意见,这具体是我要问的:
javascript ×11
node.js ×3
angularjs ×2
express ×2
jquery ×2
if-statement ×1
ng-bind-html ×1
oauth ×1
passport.js ×1
performance ×1
screenshot ×1
vps ×1
web-scraping ×1