小编dou*_*lin的帖子

Internet Explorer中的Javascript无效日期错误

相对简单的javascript在这里,不确定为什么IE讨厌我(对待别人你想如何对待我想).

var newDate = new Date("2012, 11, 2 19:30:00:000");
alert(newDate);
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome和FF,但IE输出"无效日期"

把我搞砸了:http://jsfiddle.net/k6yD6/

javascript internet-explorer date

39
推荐指数
2
解决办法
7万
查看次数

使用Dust.js进行客户端模板化的基本示例

这是我第一次涉足客户端模板,我想确保我理解并正确使用它.阅读这篇LinkedIn工程博客后,我决定选择dust.js而不是小胡子把手.请注意,这个stackoverflow帖子回答了我的许多问题,但我仍然有一些我想澄清的事情.

在我工作的环境中,我无法访问服务器端的任何内容,因此我创建的所有内容都必须能够完全在客户端的浏览器中运行.对于此示例,我将尝试从LinkedIn Dust Tutorial重新创建此代码示例.

我包括dust-full.js而不是dust-core.js因为我要动态编译模板:

<script src="js/dust-full.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<script id="entry-template">
{title}

<ul>
    {#names}
    <li>{name}</li>{~n}
    {/names}
</ul>
</script>

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

和JavaScript(使用jQuery):

$(document).ready(function () {
    var data = {
        "title": "Famous People", 
        "names" : [{ "name": "Larry" },{ "name": "Curly" },{ "name": "Moe" }]
    }

    var source   = $("#entry-template").html();
    var compiled = dust.compile(source, "intro");
    dust.loadSource(compiled);

    dust.render("intro", data, function(err, out) {
        $("#output").html(out);
    });
});
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,你可以在 …

linkedin client-side-templating dust.js

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

Bootstrap 3隐藏菜单项上的下拉菜单单击

看看小提琴.我有一个基本的Bootstrap 3响应导航,如下所示:

    <div id="navbar" class="navbar navbar-fixed-top navbar-inverse">
        <div class="container">
            <a id="navbar-toggle" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </a>

            <a class="navbar-brand" href="#">Title Title Title</a>

            <div id="nav-collapse" class="nav-collapse collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#option1">Option 1</a></li>
                    <li><a href="#option2">Option 2</a></li>
                    <li><a href="#option3">Option 3</a></li>
                </ul>
            </div>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

导航项链接到页面上的部分,而不是不同的页面,所以我需要下拉列表以隐藏点击.

每当我尝试使用jQuery手动切换下拉列表时,它会混淆下拉切换按钮的未来功能:

$("#navbar li a").click(function(event) {
    // check if window is small enough so dropdown is created
    $("#navbar-toggle").is(":visible")
        $("#nav-collapse").toggle();
});
Run Code Online (Sandbox Code Playgroud)

对此有更好的解决方法吗?

jquery uinavigationbar responsive-design twitter-bootstrap drop-down-menu

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

React Router v4动画转换示例

v4文档中提供的动画转换示例对我来说似乎有点费解,因为它描绘了淡入淡出相同的组件并调整背景颜色.

我正在尝试将这种技术应用于一个更真实的例子,将一个组件淡出另一个组件,但是我无法使其正常工作(它似乎只是淡出第一个,然后第二个弹出in,此转换只能以一种方式工作(后退按钮不会转换).

这是我的代码,它使用MatchWithFade示例中的精简版本:

import React from 'react';
import { TransitionMotion, spring } from 'react-motion'
import { HashRouter, Match, Miss } from 'react-router';
import Home from './components/Home';
import Player from './components/Player';
import FormConfirmation from './components/FormConfirmation';

const App = () => (
  <HashRouter>
    <div className="App">
      <MatchWithFade exactly pattern="/" component={Home} />

      <MatchWithFade pattern="/player/:playerId" component={Player} />

      <MatchWithFade pattern="/entered" component={FormConfirmation} />

      <Miss render={(props) => (
        <Home players={Players} prizes={Prizes} {...props} />
      )} />
    </div>
  </HashRouter>
);

const MatchWithFade = ({ component:Component, ...rest }) …
Run Code Online (Sandbox Code Playgroud)

transition reactjs react-router react-router-component

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

将道具传递给React-Router 4.0.0儿童路线

我正在尝试将现有的react-router 3.0.0应用程序迁移到4.0.0.在路由器中,我需要传递一个prop与其子节点相关的非路由选择.

在本文中详细介绍的反应路由器的先前版本中,有一些方法可以实现这一点.我个人最喜欢的是使用这种方法cloneElement,因为它确保了所有的反应路由器道具也被复制了:

// react-router 3.0.0 index.js JSX
<Router history={browserHistory}
  <Route path="/" component={App}>
    <Route path="/user/:userId" component={User} />
    <IndexRoute component={Home} />
  </Route>
</Routes>

// App component JSX (uses cloneElement to add a prop)
<div className="App">
  { cloneElement(props.children, { appState: value }) }
</div>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的新App组件如下所示:

// react-router 4.0.0 App component JSX (moved routing code out of index.js and into here)
<BrowserRouter>
  <div className="App">
    <Match exactly pattern="/" component={Home} />
    <Match pattern="/user/:userId" component={User} …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

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

Gatsby.js:在没有渲染阻止的情况下为版式主题加载Google字体

我正在使用Gatsby.js及其带有Irving主题的Typography插件.

此主题需要Google字体"Exo""Yrsa",并<head>在导出的静态html文件部分添加导入:

<link href="//fonts.googleapis.com/css?family=Exo:700|Yrsa:400,700" rel="stylesheet" type="text/css"/>
Run Code Online (Sandbox Code Playgroud)

此导入是渲染阻止内容,如果可能,我会更愿意避免使用这些内容和Google PageSpeed Insights分数.

我尝试使用gatsby-plugin-google-fonts并将以下内容添加到我的gatsby-config.js中:

{
  resolve: `gatsby-plugin-google-fonts`,
  options: {
    fonts: [
      `Exo\:700`,
      `Yrsa\:400,700`,
    ],
  }
},
Run Code Online (Sandbox Code Playgroud)

然而,这只是添加了第二个导入调用.我应该将它们放在静态目录中吗?即使这样,我如何配置Typography仍然使用这些字体而不单独导入它们?

typography google-font-api google-pagespeed gatsby render-blocking

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

使用SetInterval()调用Javascript对象方法

这是一个小提琴.

我正在尝试创建一个使用moment.js的倒计时对象(我喜欢使用Date()的插件)

var Countdown = function(endDate) {
    this.endMoment = moment(endDate);

    this.updateCountdown = function() {
        var currentMoment, thisDiff;

        currentMoment = moment();
        thisDiff = (this.endMoment).diff(currentMoment, "seconds");

        if (thisDiff > 0)
            console.log(thisDiff);
        else {
            clearInterval(this.interval);
            console.log("over");
        }
    }

    this.interval = setInterval(this.updateCountdown(), 1000);
}
Run Code Online (Sandbox Code Playgroud)

然后我创建一个倒计时的实例,如下所示:

var countdown = new Countdown("January 1, 2014 00:00:00");
Run Code Online (Sandbox Code Playgroud)

但是这个功能似乎只运行一次.有任何想法吗?我应该使用setTimeout()吗?

javascript methods object setinterval momentjs

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

Gatsby.js:使用URL参数和浏览器后退/前进按钮进行导航

我有一个文章组件,显示帖子列表.该列表是分页的,因此每页最多可显示10个帖子.有一个"下一页"按钮,单击时将更新组件状态和相应的url参数,如下所示:

第1页:/ news

第2页:/ news?page = 2

第3页:/ news?page = 3

...等等.设置constructor()render()方法的方式,如果用户直接导航到/ news?page = 3,它将读取此URL参数并显示正确的帖子.

我遇到的问题是浏览器后退和前进按钮似乎没有重新呈现页面.因此,如果用户点击"下一页"按钮几次然后点击后退按钮,则URL将更新,但页面将不会重新呈现.有没有办法强迫它这样做?

我猜测有一种方法可以通过添加一个window.history监听器来实现这一点,但我不确定是否有推荐的练习gatsby-link.

以下是该组件的精简版本供参考:

import React, { Component } from 'react';
import { navigateTo } from 'gatsby-link';
import getUrlParameter from '../functions/getUrlParameter';

export default class extends Component {
  constructor(props) {
    super(props);

    /* external function, will grab value
    * of ?page= url parameter if it exists */
    const urlParamPage = getUrlParameter('page');
    const currentPage = urlParamPage ? urlParamPage : 1;

    this.state = { …
Run Code Online (Sandbox Code Playgroud)

back-button browser-history reactjs react-router gatsby

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

在没有PHP的情况下模拟PHP包含

我想在多个页面上包含相同的导航菜单,但是我没有PHP支持,也不能以任何其他方式影响我的服务器.

我想避免简单地将html复制并粘贴到所有页面上,因为这会使菜单更新变得很痛苦.

我能想到的两个选项如下:

1)在一个页面上存在所有内容,然后根据附加到网址的关键字确定要显示的内容:

example.com/index?home
example.com/index?news
Run Code Online (Sandbox Code Playgroud)

2)包含一个javascript文件,该文件具有将菜单写出并在每个页面上调用该函数的功能

function setupMenu() {
    $("#nav").html("<ul class='nav'><li>home</li><li>news</li></ul>");
}
Run Code Online (Sandbox Code Playgroud)

使用选项1,更新过程包括在一页上编辑一个导航菜单

使用选项2,更新意味着更改javascript文件中的功能

我对选项1的关注是页面必须加载很多不需要显示的内容.我对选项2的关注可能看似微不足道,但是代码可能会变得混乱.

是否有任何理由这样做会比另一种更好?或者我缺少第三个优越的选择?

html javascript php url include

6
推荐指数
2
解决办法
8826
查看次数

Gatsby.js:Markdown中的预处理相对路径链接

我想知道是否有办法(可能通过为其创建插件gatsby-transformer-remark)将相对路径链接转换为使用<Link>from的方式gatsby-link

例如,说我在markdown文件中包含以下内容:

# Here is a Header

Check out my about page:

[About](/about)
Run Code Online (Sandbox Code Playgroud)

如果我导入此markdown并显示为:

<div dangerouslySetInnerHTML={{ __html: whatever.childMarkdownRemark.html }} />
Run Code Online (Sandbox Code Playgroud)

然后,当单击“关于”链接时,它打破了单页应用程序的魔力。

有什么办法可以防止这种情况?提前致谢。

markdown reactjs contentful gatsby

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