小编dou*_*lin的帖子

限制 CORS 来源,Node/Express 不起作用

我尝试使用express.js CORS 包将 CORS 请求的来源限制为每个路由的一个特定域,如下所示:

const express = require('express');
const cors = require('cors');

const port = process.env.PORT || 3000;

let app = express();

app.get('/', cors({origin: 'http://example.com'}), (req, res, next) => {
  res.sendStatus(200);
});

app.post('/', cors({origin: 'http://whatever.com'}) (req, res, next) => {
  res.sendStatus(200);
});

app.listen(port, () => {
  console.log(`Started on port ${port}`);
});
Run Code Online (Sandbox Code Playgroud)

然而,这似乎没有任何效果,因为我可以GET进出POST任何域。然后,我尝试使用以下命令将所有路由限制为一个来源,但得到了相同的结果:

app.use(cors({origin: 'http://example.com'}));
Run Code Online (Sandbox Code Playgroud)

我在 localhost 上的开发环境和 Heroku 上的生产环境中都遇到了这种情况。知道我缺少什么吗?

heroku http-headers node.js cors express

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

Gatsby.js:按嵌套对象属性过滤GraphQL查询

我正在一个新闻网站上工作,该网站上将有文章,每篇文章都有一个或多个各自的作者。如果单击作者的姓名,它将带您到一个页面,显示他们的信息和他们撰写的文章列表。

因此,每篇文章都有一个authors属性,该属性又是author具有属性的对象数组:全名,slug(全名的小写版本,用空格代替破折号),等等。

定义查询时是否可以按特定作者的文章过滤文章?

query authorQuery($slug: String!) {
  allContentfulArticle(filter: { //not sure what to do here }) {
    edges {
      node {
        title
        slug
        authors {
          name
          slug
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的另一个选择是加载所有文章,然后在组件中设置过滤器,如下所示:

const articles = data.allContentfulArticle.edges.filter(({ node }) => {
  return node.authors.some((author) => author.slug === data.contentfulAuthor.slug);
});
Run Code Online (Sandbox Code Playgroud)

这不是世界末日,但是它违反了仅加载所需数据的GraphQL原则。

filter contentful graphql graphql-js gatsby

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

Javascript动态更改元数据/元标记

我将描述我想要完成的事情,如果我的方法看起来很愚蠢,请随时告诉我:

我有一个带有视频库和flash视频播放器iframe的页面.当用户点击视频缩略图时,它开始在框架中播放.

用户还可以通过将文件路径附加到url的末尾 - blabla.com/videogallery?videofilepath来转到加载到iframe中的特定视频的页面.我进行了设置,以便轻松分享视频.

我希望能够为facebook/twitter添加分享按钮,但我无法让它们工作并使用正确的元数据(图像和标题)正确呈现自己.

所以我想把Share按钮放在播放器iframe中,然后在视频发生变化时动态更新元数据标签,但我不确定如何解决这个问题.

任何帮助将不胜感激,谢谢.

javascript iframe metadata dynamic meta-tags

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

获取用户的最新SoundCloud Track链接

我一直在寻找一种方法来做这件事,因为看起来他们应该是一个.

我只是想从SoundCloud页面自动拉出5个最近的曲目,并将它们放在我的网站上的"最新音频"部分下.

SoundCloud甚至自己做到了这一点.如果你去特定的曲目,在页面的右下角有一个"USERNAME的更多曲目",请看一下:http: //soundcloud.com/goldenstatewarriors/mark-jackson-on-the-dan

我发现的最接近的是:

http://api.soundcloud.com/tracks?client_id={client_id}
Run Code Online (Sandbox Code Playgroud)

但为此你需要一个client_id,用于soundcloud应用程序.我尝试注册一个应用程序,但是当我client_id将上面的内容输入到上面时,我得到了一堆不属于我的音轨:

http://api.soundcloud.com/tracks?client_id=02db8e29aa2fb5bf590f478b73137c67

我只知道必须有办法做到这一点......

html javascript soundcloud

3
推荐指数
1
解决办法
2273
查看次数

jQuery在没有自动关闭标签的元素之前和之后插入内容

说我有以下内容:

<div id="content">content</div>
Run Code Online (Sandbox Code Playgroud)

我想在它之前插入一些东西(注意未闭合的div):

$("#content").before("<div>pre-pre-content</div><div>pre-content ");
Run Code Online (Sandbox Code Playgroud)

然后一些更多(注意我现在关闭div):

$("#content").after(" post-content</div><div>post-post-content</div>");
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

<div>pre-pre content</div>
<div>
    pre-content <div id="content">content</div> post-content
</div>
<div>post-post content</div>
Run Code Online (Sandbox Code Playgroud)

相反,我得到的是:

<div>pre-pre content</div>
<div>pre-content</div>
<div id="content">content</div>
<div>post-content</div>
<div>post-post content</div>
Run Code Online (Sandbox Code Playgroud)

因为jQuery会自动"纠正"未关闭的标签.

小提琴

有没有办法使用.wrap()在元素之前和之后添加不同的内容而不自动关闭标签?

请注意,由于不相关的限制,我无法执行以下操作:

$("#content").html("<div>Content before " + $("#content).html() + " Content after</div>")
Run Code Online (Sandbox Code Playgroud)

javascript tags jquery insert

3
推荐指数
1
解决办法
8424
查看次数

使用Zurb Foundation Framework进行Browserify

后解编辑

这是一个Yeoman生成器,用于基础和Browserify建立一个项目:https://github.com/dougmacklin/generator-foundation-browserify


我正在试图找出如何正确地将基础框架 js与browserify捆绑在一起.

在我的项目文件夹中,我将它与jQuery一起安装(它依赖于它):

npm install jquery foundation-sites --save
Run Code Online (Sandbox Code Playgroud)

然后在我的main.js我有以下内容:

var $ = jQuery = require('jquery');
var foundation = require('foundation-sites');
$(document).foundation();
Run Code Online (Sandbox Code Playgroud)

我包括$ = jQuery = ...因为如果我不这样做我会收到jQuery is not defined错误.

但是,js组件不起作用.例如,警报元素无法正常关闭.

<div data-alert class="alert-box">
    <!-- close functionality not working -->
    <a href="#" class="close">&times;</a>
</div>
Run Code Online (Sandbox Code Playgroud)

如果有帮助,这里是一个plunkr,包括我index.html,main.js,bundle.js,package.jsongulpfile.js.

我仍然在使用browserify,我应该使用browserify-shim,还是我做错了什么?

jquery zurb-foundation browserify gulp browserify-shim

3
推荐指数
1
解决办法
1187
查看次数

JS .children返回一个对象,想要一个数组(ES6)

根据其w3schools页面(我知道每个人最喜欢的资源),该.children物业返回

一个实时HTMLCollection对象,表示元素节点的集合

这个对象可以循环,好像它是一个像这样的数组:

var elements = document.getElementById('test').children;

for (var i=0; i < elements.length; i++) {
  console.log(elements[i]);
}
Run Code Online (Sandbox Code Playgroud)
<div id="test">
  <p>paragraph 1</p>
  
  <p>paragraph 2</p>
  
  <p>paragraph 3</p>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,尝试使用该.map函数会引发错误:

var elements = document.getElementById('test').children;

var x = elements.map((element, index) => {
  console.log(element);
});
Run Code Online (Sandbox Code Playgroud)
<div id="test">
  <p>paragraph 1</p>

  <p>paragraph 2</p>

  <p>paragraph 3</p>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来获取子DOM元素数组,或者我是否必须遍历该对象并手动创建一个数组才能使用数组方法,如.map()?注意,我不想使用jQuery.提前致谢.

javascript arrays dom children

3
推荐指数
1
解决办法
7575
查看次数

如何将jQuery .click()的event参数传递给非匿名函数

完成以下任务的正确方法是什么:

$("#btn").click(function1);
Run Code Online (Sandbox Code Playgroud)

调用函数:

function function1 (event) {
    event.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是我不明白function1如何理解事件参数在没有被传入的情况下引用的内容.这样的监听器设置是否更有意义:

$("#btn").click(function1(event));
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴.

javascript jquery anonymous-function preventdefault

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

基础5轨道滑块内部显示模态没有高度

这是一个jsfiddle,展示了以下问题.

我正在使用Foundation 5框架并试图在Reveal Modal中包含一个Orbit Slider,但由于某种原因,滑块没有给出合适的高度.

<-- Button to Reveal Modal -->
<a href="#" data-reveal-id="myModal" data-reveal class="button radius">Click For Modal</a>

<!-- Modal Popup that is revealed -->
<div id="myModal" class="reveal-modal" data-reveal>
    <ul data-orbit>
        <li><img src="http://placekitten.com/400/300" /></li>
        <li><img src="http://placekitten.com/400/300" /></li>
        <li><img src="http://placekitten.com/400/300" /></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

请注意,如果您在模式打开的情况下调整浏览器窗口的大小,它会自动将自身更正为适当的高度.此问题存在于以前版本的Foundation中,因此出现了像这样的hacky修复:

$('.reveal-modal').on('opened', function(){
    $(this).find('[data-orbit]').css('height','');  
    $(window).trigger('resize.fndtn.orbit');
});
Run Code Online (Sandbox Code Playgroud)

但是,此修复程序不再适用于最新版本的Foundation.有没有办法让它运作?

请注意,我不想简单地指定一个min-height css属性,因为我的滑块中的内容将具有可变高度,更不用说响应,因此像素值不起作用.

modal-dialog lightbox responsive-design zurb-foundation orbit

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