小编Meg*_*att的帖子

Javascript:如何捕获导航到使用window.location.href = url的页面上的错误

我正在使用REST服务生成一个CSV文件,我想提示用户下载.该服务的一个例子如下:

https://localhost:8444/websvc/exportCSV?viewId=93282392

要提示用户下载文件,我使用以下代码:

window.location.href = exportUrl,其中exportUrl一个URL就像上面的那个.

如果在执行服务时服务器上没有错误,这种方法很有用.出现文件下载提示,页面不刷新,一切正常.

然而,如果一个错误,我越来越讨厌的HTTP状态500页,这是不利于用户体验.我想做的是在结果页面上捕获任何错误,并在不离开当前页面的情况下抛出更友好的错误.我试过了:

try {
    window.location.href = exportUrl;
}
catch (e) {
    alert(e);
}
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有改变行为.有没有人对如何处理这个有任何想法?

非常感谢.

javascript error-handling try-catch window.location

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

C#列表:如何将元素从一个列表复制到另一个列表,但只复制某些属性

所以我有一个包含许多属性的对象列表.这些属性包括nameid.我们将此对象称为ExtendedObject.我还声明了一个新的List,它包含只有属性id不同对象.我们将此对象称为BasicObject.

我想要做的是将ExtendedObject对象列表转换或复制(缺少更好的单词)到BasicObject对象列表.我知道C#列表有很多有用的方法,所以我想知道是否有一种简单的方法可以说出以下结果:

basicObjectList = extendedObjectList.SomeListMethod<BasicObject>(some condition here);
Run Code Online (Sandbox Code Playgroud)

但我意识到它可能最终看起来不像那样.我也意识到我可以循环遍历ExtendedObjects列表,从每个ExtendedObject的名称和id创建一个新的BasicObject,并将其推送到BasicObjects列表中.但我希望有一些比这更优雅的东西.

有没有人有任何想法?非常感谢.

c# list

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

jQuery:绑定和解除绑定实时点击事件

所以我的问题有两个限制:

  1. 我必须在我的点击事件中使用外部函数调用,并且
  2. 我必须使用实时点击事件,而不是绑定典型的点击事件.

所以我的问题是我在点击事件发生后尝试取消绑定,然后在点击事件代码完成后重新绑定它.我这样做是为了防止代码当前正在进行中的重复点击(我有fadeIn/Out动画,可以快速点击按钮两次或三次,从而执行我的代码2或3次,这是不需要的) .我正在使用的代码如下:

$item.live("click", handleClick);
Run Code Online (Sandbox Code Playgroud)

function handleClick(ev) {

    $(this).die("click");

    // perform code here, including things with 'ev'

    $(this).live("click", handleClick);
}
Run Code Online (Sandbox Code Playgroud)

我疯了,还是应该没有问题?现在,我可以点击一次,但之后不会再次点击.很明显die()正在工作,但它并没有因为某种原因而被重新绑定到该函数.我已经验证它确实到达handleClick()中的代码以重新绑定实时点击.

有任何想法吗?任何帮助将不胜感激.谢谢.

jquery bind click live die

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

将元素滚动到容器内的视图中,但不在浏览器窗口中

我有一个带有水平排列标签的容器。请参阅下面的示例。

容器具有overflow:hiddenwhite-space:nowrap,因此标签可能永远位于右侧。我想以编程方式水平滚动到给定标签,前提是我在 Javascript 中有其 HTML 元素。

在我的测试组件中,我一直在使用el.scrollIntoView(),它似乎工作得很好。但后来我将该组件集成到一个垂直滚动的更大的 HTML 页面中,我注意到每次调用时el.scrollIntoView,它仍然会在其容器内水平滚动到视图中,但整个页面也会跳转到容器与浏览器窗口的顶部。这第二种行为显然是我不想要的。

有没有某种方法可以仅在容器内滚动到视图中,而不让浏览器窗口也跳转?如果可能的话,我想使用 vanilla JS。

function scrollToLast() {
  var container = document.getElementById('container');
  var tags = container.getElementsByTagName('span');
  tags[tags.length-1].scrollIntoView()
}
Run Code Online (Sandbox Code Playgroud)
body {
  text-align: center;
}

#container {
  border: 1px solid;
  margin: 100px auto 20px;
  overflow: hidden;
  padding: 10px;
  text-align: left;
  white-space: nowrap;
  width: 75%
}

#container > span {
  border: 1px solid grey;
  display: inline-block;
  margin-right: 5px;
  padding: 3px;
}

button {
  margin-bottom: 100px;
}

.extra-content-on-page:before { …
Run Code Online (Sandbox Code Playgroud)

html javascript css scroll js-scrollintoview

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

在Webpack中使用样式加载器时出现“未定义窗口”错误

构建服务器端react应用程序,并且在使用Webpack时,Style-Loader出现问题。

我正在使用版本“ ^ 0.23.1”,并且在运行脚本进行捆绑和构建时,Style-Loader出现了问题。

问题是 window is not defined

webpack:///./node_modules/style-loader/lib/addStyles.js?:23
    return window && document && document.all && !window.atob;
Run Code Online (Sandbox Code Playgroud)

有没有人遇到这个问题?在查看了有关样式加载程序的Stack和Github问题之后,我没有找到任何解决方案。

这是我的webpack文件:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  // webpack to use node
  target: 'node',
  entry: './src/index.js',
  output: {
    filename: 'client-build.js',
    path: path.resolve(__dirname, 'build/public'),
    publicPath: '/build/public'
  },
  module: {
    rules: [
      {
        test: /\.js$|\.jsx$/,
        loader: 'babel-loader',
        exclude: '/node_modules/',
        options: {
          presets: [
            '@babel/preset-react'
          ]
        }
      },
      {
        test: /\.(s*)css$/,
        loader: ['style-loader', 'css-loader', 'sass-loader']
      },
      {
        test: /\.jpeg$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$|\.jpg$|\.pdf$/, …
Run Code Online (Sandbox Code Playgroud)

reactjs webpack webpack-style-loader

10
推荐指数
2
解决办法
3102
查看次数

jQuery:选择具有特定val()的所有'select'元素

有没有人知道一个简单的方法,使用jQuery,选择<select>其val()属性产生一定值的所有元素?

我正在尝试做一些验证逻辑,并希望只用一个选择器选择所有这些元素,然后将警告类应用于他们的每个父母.我知道如果选择所有元素后该怎么做,但我没有看到处理这种情况的选择器.

我是否必须将所有<select>元素选择到选择器中,然后遍历它们并检查它们的每个值?我希望有一种更简单的方法.

谢谢.

jquery-selectors

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

带有溢出的弯曲儿童尊重父级在Chrome中的最大身高,而不是在Firefox中

我有一个带有的Flexbox容器max-height.它有两个孩子,水平弯曲,其中一个有overflow: auto.在Chrome中,有溢出的孩子一旦达到容器的最大高度就停止生长并滚动.在Firefox中,它溢出容器.

我正在开发针对最新的Chrome(目前为59),但必须支持Firefox 40+,因此我正在使用Firefox 40进行测试.作为参考,caniuse.com报告FF40 完全支持flexbox.

这显然在较新的FF版本中正常工作,但在我正在使用的FF40中没有,所以对于那些无法访问较旧的FF的人,这里是我看到的行为的屏幕截图:

Firefox 40 在此输入图像描述

Chrome 59 在此输入图像描述

我可以通过消除左边的子节点并设置flex-direction: column容器来解决这个问题,但遗憾的是我的实际应用程序需要左侧的内容并需要水平弯曲.

为什么跨浏览器存在差异?什么是跨浏览器解决方案,让溢出的孩子像Chrome一样停止增长?

div { padding: 10px; }

#container {
  border: 1px solid green;
  display: flex;
  max-height: 200px;
}

#left {
  border: 1px solid purple;
  flex: 1;
}

#right {
  border: 1px solid orange;
  flex: 3;
  overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
  <div id="left">
    Left content
  </div>
  <div id="right">
    I stop growing at 200px tall in Chrome, but not in Firefox
    <ul>
      <li>Stuff</li> …
Run Code Online (Sandbox Code Playgroud)

html css cross-browser css3 flexbox

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

将模块的多个命名导出导入单个对象

假设我有:

动物.js

import cat from './cat';
import dog from './dog';
import emu from './emu';
import pig from './pig';
import cow from './cow';

export { cat, dog, emu, pig, cow };
Run Code Online (Sandbox Code Playgroud)

在使用 的模块中animals.js,如何仅将几个需要的导入到键控对象中?我希望能够执行以下操作:

我的module.js

import { cat, dog } as housePets from './animals';

// housePets == { cat: theCatModule, dog: theDogModule }
Run Code Online (Sandbox Code Playgroud)

但是根据我的 IDE,这种语法是不正确的。

有没有办法做到这一点?或者是简单地单独导入所有对象,然后构建我自己的对象的最佳方法?

javascript import es6-modules

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

ASP.NET:如何检测身份验证超时

我已经看过多篇像这样的文章解释了如何检测用户的会话已经超时.为清楚起见,这些文章指的是此web.config行定义的超时值:

<sessionState mode="InProc" cookieless="UseDeviceProfile" timeout="120" />
Run Code Online (Sandbox Code Playgroud)

不要过多地使用该方法,但这涉及检查Session.IsNewSession是否为true以及会话cookie是否已存在.但我还没有看到任何关于如何检测身份验证超时的文章- 这个web.config行定义的文章:

<authentication mode="Forms">
    <forms loginUrl="~/Home/Customer" timeout="60" name=".ASPXAUTH" requireSSL="false" slidingExpiration="true" defaultUrl="~/Home/Index" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

在线多篇文章,包括这篇SO帖子,都说你的会话超时值通常应该是你的身份验证超时值的两倍.所以现在,如上所述,我的会话是120,我的身份验证是60.这意味着我永远不会遇到会话超时的情况,但用户仍然是经过身份验证的; 如果用户超时,则由于身份验证而非会话.

所以,和其他人一样,我对如何向用户报告他们的会话超时(但实际上是由于身份验证超时)感兴趣.有没有人知道如何实现这一目标,或任何可以指向我解决方案的在线资源?

forms asp.net session-timeout

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

jQuery Datatables插件:如何在向表中添加行时指定行属性

我想知道是否有其他人遇到过这个问题.当我最初在我的视图中构建我的表时,我customerID在每个表行中使用自定义属性(调用它)来保存我需要传递给ajax调用的信息.但是,我也在动态地向表中添加行,我无法弄清楚如何传回相同的信息(customerID)以放入行的属性中.目前,我在添加行时唯一要做的就是构建一个字符串数组数组,这些数组完全映射到我的列.这样可以正常工作,但没有空间发回额外的信息.

我想我不需要将它存储在属性中,如果在添加行时有另一种方法将该信息发送回视图.有没有人对此有任何想法?

谢谢.

jquery datatables

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