小编mac*_*ost的帖子

用于处理选项卡内容的哈希标签的系统?(#!)

我在我正在处理的网站的主要部分有四个页面,有标签可以在它们之间切换.我希望4个选项卡之间的切换是一个渐变过渡(使用jQuery).这一切都很好,花花公子,但我也希望SEO将每个视为一个单独的页面.我还希望能够链接到URL并为其提取正确的内容,即使它在技术上是同一页面.

Facebook这样做(facebook.com/#!/another-string-here),你可以在图片等之间切换,所以它有点像javascript查询字符串.

这允许立即切换,链接到它的能力,但每个都充当它自己的页面.

是否有推荐的方法来执行此操作?


更新我发现的最好的是SammyJS - 尚未实施,但它看起来是最好的答案:http://sammyjs.org/

javascript php jquery hashtag

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

如何将JavaScript类实例传递给DOM事件侦听器?

我有一个看似非常棘手的情况.我想将一个对象的实例传递给由同一个对象实例创建的DOM元素的事件监听器(如果这是有意义的话).

function Object(callback){
    this.callback = callback;
    this.node = document.createElement('div');
    this.send = function(){
        document.getElementById('list').appendChild(this.node);
    }
    this.node.addEventListener('click',function(){/*this.callback() of Object instance needs to go here*/},true);
}
Run Code Online (Sandbox Code Playgroud)

我知道使用callback()将在事件监听器内部工作,但这不是我需要的,因为我将使用实例中的变量,这些变量稍后不会从构造中传递.

我怎么解决这个问题?

javascript dom object

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

Javascript Undefined String Property Tuthiness

我经常在我的Javascript中使用以下模式:

x = couldBeNullThing || valueIfItIsNull;
Run Code Online (Sandbox Code Playgroud)

因为它胜于:

x = couldBeNullThing ? couldBeNullThing : valueIfItIsNull;
Run Code Online (Sandbox Code Playgroud)

我也经常使用相同模式的轻微变体:

x = x || valueIfXIsNotDefined;
Run Code Online (Sandbox Code Playgroud)

这一切都很棒...除了问题,我最近发现:

foo = "";
//assert foo.x === undefined;
foo.x = foo.x || valueIfXIsNotDefined;
//assert foo.x === undefined;
Run Code Online (Sandbox Code Playgroud)

换句话说,如果你有一个字符串,你就做了string.aPropertyThatStringDoesntHave || foo,你既不会回头也不会回到实际价值; 相反,你得到了未定义.

谁能解释为什么会这样?在我看来,如果foo.x未定义,那么foo.x || anythingElse应该总是导致任何东西......所以为什么不呢?

javascript truthiness

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

使用Firefox/Firebug,为什么只有一些错误才能获得Stacktraces

我注意到,使用Firefox/Firebug(我的主要开发环境),一些错误会产生堆栈跟踪,而其他错误则不然.起初我认为这与我是否生成错误(例如,新错误("foo"))或Javascript是否生成它(例如,undefinedFoo + = 1)有关,但我注意到它发生在两种类型中错误.

所以,我的问题是,有谁知道是什么原因造成的?它是随机的还是有一些模式/逻辑?它只是Firefox和/或Firebug是跛脚还是其他浏览器也这样做?最重要的是,有什么我可以做的来控制它(特别是让它总是给我堆栈痕迹)?

这不是一个至关重要的问题(因为我总是可以在错误发生的任何行之前抛出"console.trace()"),但我很好奇是否有人知道答案.

**********编辑**********

我找到了这个主题:http : //groups.google.com/group/firebug/browse_thread/thread/1f32df8b96ec1d30/64b9074cb99056c2? pli=1,其中提到如果错误不是一个实例,Firefox不会向Firebug提供堆栈跟踪错误.换句话说,如果你抛出的东西不是新的错误("foo"),你就不会得到堆栈跟踪.

但是,这对我没有帮助,因为即使我抛出新的Error(),我也没有看到堆栈跟踪.

firebug stack-trace

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

JavaScript事件处理程序是否应该进行单元测试

关于其他语言的单元测试事件处理程序,这里有很多问题,但是当涉及JavaScript时,我一直找不到很好的答案。具体来说,我是在谈论类似的情况:

// inside a "view" class definition:
handleCheckboxClick: function() {
    this.relevantData.toggleSomeValue();
    return false;
}

// later on:
$('#someCheckbox').on('click', view.handleCheckboxClick);
Run Code Online (Sandbox Code Playgroud)

显然,事件处理程序(this.relevantData.toggleSomeValue())中有逻辑,但是与此同时,没有其他方法可以调用该处理程序,因此,与进行单元测试一样,它不会捕获将来与重构相关的一些错误。而且,在任何给定的JavaScript代码库中,都有许多这些处理程序,因此测试它们不是一件容易的事。

另外,在许多JS商店(一定是在我们的商店)中,还使用Selenium进行了功能级别的测试,这些测试通常会捕获明显的UI问题(例如,事件处理程序中断时)。

因此,一方面,我得到了“逻辑的单元测试==好的”,而且我不想在不花钱的情况下不测试某些代码,如果以后再付钱的话。另一方面,当涉及单元测试时,这个特定的代码子集似乎成本很高且价值较低。因此,对于SO社区,我的问题是,JS开发人员是否应该单元测试其事件处理功能?

javascript unit-testing

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

TinyMCE:如何更改格式(“段落”、“标题 1”等)

默认情况下 TinyMCE (4) 有一个“段落?” 下拉菜单,如果你点击它,你会得到一个格式选项列表(“段落”、“标题 1”等)。

我希望能够做两件事。首先,我想更改选项及其名称(例如,更改为“Normal”和“Heading”),并且我找到了执行block_formats此操作的选项:

block_formats: 'Normal=p;Heading=h1'
Run Code Online (Sandbox Code Playgroud)

但是,我坚持第 2 件事:向生成的元素添加类。而不是普通<h1>元素,当有人选择“标题”时,我想生成一个<h1 class="heading">.

我想也许这会奏效:

block_formats: 'Normal=p;Heading=h1.heading'
Run Code Online (Sandbox Code Playgroud)

...但事实并非如此,而且我找不到任何其他选项可以让我这样做。再说一次,TinyMCE 文档并不总是最容易找到答案的地方,这就是我来到这里的原因。

有谁知道我如何配置 TinyMCE 以拥有“段落”?生成的元素上带有自定义名称和自定义类的下拉列表?

tinymce tinymce-4

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

如何在 It 语句之外获取 Node/Mocha 错误的堆栈跟踪

当我通过 Node.js 运行我的 Mocha 测试套件并且代码出错时,Node 会输出该错误的堆栈跟踪......除非它是由调用未定义变量引起的 TypeError,在这种情况下我没有堆栈跟踪或测试失败,只是一行输出。

例如,如果我有以下代码:

foo.bar(); // foo is undefined
Run Code Online (Sandbox Code Playgroud)

我只是得到:

[TypeError: Cannot read property 'bar' of undefined]
Run Code Online (Sandbox Code Playgroud)

当我运行摩卡时。

有没有办法让 Node/Mocha 输出此类错误的完整堆栈跟踪?没有它就很难找到它抱怨的问题。

编辑:实际上,问题似乎也与发生错误的位置有关。如果它发生在 a describeI内,我不会得到堆栈跟踪,但如果它们发生在itI内。有没有办法在describes (或其他任何没有堆栈跟踪的地方)中获取错误以显示其堆栈跟踪?

javascript mocha.js node.js

5
推荐指数
0
解决办法
488
查看次数

如何声明React PropTypes XOR

我曾经用多个配置编写组件例如:

ResponsiveTable.PropTypes = {
  width: React.PropTypes.number, //used if widthOffset and minWidth are undefined
  widthOffset: React.PropTypes.number, //used if width is undefined
  minWidth: React.PropTypes.number, //used if width is undefined
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能声明只有在我已经设置了其他道具的情况下才能使用的道具?

一个XOR选项是有用的.我阅读https://facebook.github.io/react/docs/reusable-components.html但它没有帮助.

有任何想法吗?

reactjs react-proptypes

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

我怎么git reset - 硬起源/我检查过的任何分支?

我正在尝试编写一个git部署脚本,但脚本必须更新多个服务器,并且它们并非都在同一个Git分支上.理想情况下,脚本应该只需要一个命令,效果为"git reset --hard origin/whateverBranchThisServerIsOn".

现在,我知道我能做到:

git reset --hard origin/foo
Run Code Online (Sandbox Code Playgroud)

将我的git环境重置为远程foo分支.但是,我想要做的是重置为远程分支,但不是"foo"具体,只是"机器当前已检出的任何分支的远程(即,当你做什么分支时git branch").

我试过了:

git reset --hard origin
Run Code Online (Sandbox Code Playgroud)

和:

git reset --hard origin/HEAD
Run Code Online (Sandbox Code Playgroud)

和:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

但是他们要么结账其他分支,要么(在最后一种情况下)没有获得远程提交.当然有一些方法可以说git reset --hard origin/CURRENT_BRANCH

git

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

Google Search Console API:如何解决“用户没有足够的网站权限”?(当用户有权限时)

我正在尝试通过其 Node 包使用 Google 的 Search Console API,我的代码如下所示:

const auth = new GoogleAuth({
  scopes: 'https://www.googleapis.com/auth/webmasters.readonly',
});
const webmasters = google.webmasters('v3');
const params = {
  auth,
  siteUrl: 'example.com',
  resource: {
    startDate: '2015-08-25',
    endDate: '2015-08-25',
    dimensions: ['query', 'page'],
    rowLimit: 10,
  },
  aggregationType: 'byPage',
};
const res = await webmasters.searchanalytics.query(params);
console.log(res.data);
Run Code Online (Sandbox Code Playgroud)

...除了在我的版本中example.com已替换为我的实际域。

我在命令行中调用它:

GOOGLE_APPLICATION_CREDENTIALS="/path/to/service_key.json" node index.js
Run Code Online (Sandbox Code Playgroud)

我创建了一个服务帐户,服务密钥 JSON 文件来自该帐户。该服务帐户可以访问我的 Search Console 帐户。当我查看https://search.google.com/search-console/users时,我看到那里的服务用户,并且在“权限”列中显示“完全”。

谁能帮助我理解为什么在运行代码时出现以下错误?

{
  message: "User does not have sufficient permission for site 'http://example.com'. See also: https://support.google.com/webmasters/answer/2451999.",
  domain: 'global', …
Run Code Online (Sandbox Code Playgroud)

google-api node.js google-api-nodejs-client google-search-console

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