小编Dar*_*ava的帖子

通过HTML5和JavaScript中的localStorage循环

所以,我认为我可以像普通对象一样循环遍历localStorage,因为它有一个长度.我怎么能循环呢?

localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');
Run Code Online (Sandbox Code Playgroud)

如果我做了localStorage.length它返回3哪个是正确的.所以我假设for...in循环可行.

我想的是:

for (x in localStorage){
    console.log(localStorage[x]);
}
Run Code Online (Sandbox Code Playgroud)

但无济于事.有任何想法吗?

我的另一个想法就是这样

localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');
Run Code Online (Sandbox Code Playgroud)

其中for...in确实有效.

javascript html5 loops object local-storage

82
推荐指数
6
解决办法
8万
查看次数

热重载时未定义进程

我有一个用 create React app 制作的 React 应用程序,热重载完全杀死了页面并出现错误:

Uncaught ReferenceError: process is not defined
Run Code Online (Sandbox Code Playgroud)

奇怪的是,似乎注入了一个我以前从未注意到的 iframe:

在此输入图像描述

当我重新加载并破坏页面并阻止更新时,该 iframe 就会添加到 DOM 中。我在网上找不到任何有关“iframe-bundle.js”的文档。

编辑:我尝试删除我的节点模块和任何有问题的导入(我craco之前临时安装了)。还是同样的问题。真是太烦人了!

编辑 2:如果我删除该 iframe,一切似乎都会恢复正常,即页面更新并且可交互

reactjs create-react-app hot-reload

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

对FileList对象进行排序

我正在尝试使用新的File API对输入文件进行排序.它返回的列表似乎是不可变的:

var x = "";
var files = e.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.

files.sort();

> Uncaught TypeError: Object #<FileList> has no method 'sort' 
Run Code Online (Sandbox Code Playgroud)

如果我想一次读入多个文件,但我希望它们按顺序到达.(A.csv之前处理B.csv等).这可以实现吗?

javascript html5 file

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

svelte + rollup 中的环境变量

我正在寻找一种简单的方法来设置环境。IE 如果我可以运行npm run dev:localnpm run dev:staging加载不同的环境文件,这些文件可以在运行时通过process.env. 据了解,它是编译的,因此我可能必须以不同的方式访问变量。我直接从 sveltejs/template 使用 svelte 和 rollup。这应该很简单,但我看不出有什么办法。虽然很麻烦,但是用 webpack 可以做到。有没有一种简单的方法可以做到这一点?

javascript environment rollup svelte

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

useEffect 详尽的依赖规则令人困惑

我在 stackoverflow 上发现了一些与此相关的问题,但没有一个能满足我在使用useEffect. 假设我有一些这样的代码:

const ApiViewer = (props) => {
    const [result, setResult] = useState('')

    useEffect(async () => {
        setResult(await callApi(props.valueThatWillChangeButIOnlyCareAboutItsInitialValue))
    }, [])

    return <div>{result}</div>
} 
Run Code Online (Sandbox Code Playgroud)

exhaustive-deps规则将抛出,要求我放入props.valueThatWillChangeButIOnlyCareAboutItsInitialValue依赖项数组。我不想这样做,因为我只想要初始值。我可能会在某个地方的单独效果中使用该道具。

我也想不出另一种写法。

我也遇到其他人似乎遇到的问题,即使用我知道永远不会改变的功能/等。我不想将它们添加到这个数组中,看起来很愚蠢。

Dan Abramov 表示,通常禁用它是一个错误,并且稍后会严重影响您。我多年来一直以这种方式使用它,直到这个规则开始在新项目中出现之前我没有发现任何问题。

我使用 React 完全错误吗?

reactjs eslint react-hooks

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

VSCode 无条件返回后主动删除所有代码(no-unreachable)

有时我有这样的代码:

function x() {
  func1();
  func2();
  func3();
}
Run Code Online (Sandbox Code Playgroud)

当我调试时,如果我不想/关心func2/ ,我会在第三行添加一个 return func3

function x() {
  func1();
  return;
  
  func2();
  func3();
}
Run Code Online (Sandbox Code Playgroud)

保存时,VSCode 非常粗鲁地删除func2并且func3!!!是的,我知道这是无法访问的代码,但我只是添加暂时返回那里的代码。黄色下划线会很好。我似乎无法将其关闭。有什么办法可以关闭它还是我使用错误?对我来说,这似乎是一个非常愚蠢和过分热心的功能。

visual-studio-code

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

在tomcat服务器上设置要下载的文件.

我正在生成一个.docx文件服务器端.我将它保存到tmp目录,如下所示:

docx.createDocx(System.getProperty("java.io.tmpdir") + "/example_title");
Run Code Online (Sandbox Code Playgroud)

(我可以确认这确实有效,文件存储在/ tmp/tomcat6-tmp /

我希望用户能够下载创建的文件.我尝试过以下方法:

out.println("<a href = '"+System.getProperty("java.io.tmpdir") + "/example_title.docx"+"'>Here ya go!</a>");
Run Code Online (Sandbox Code Playgroud)

但这不起作用.它将我引导至http:// localhost:8080/tmp/tomcat6-tmp/example_title.docx.这显然是错误的方法,但是如何在服务器上创建文件以供用户使用Tomcat下载?

谢谢Dara

编辑:知道了,对于任何有兴趣的人:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("application/msword");
    response.setHeader("Content-Disposition", "attachment; filename=\"consolidatedReport.docx\"");

    // Load the template.
    // Java 5 users will have to use RhinoFileTemplate instead
    CreateDocx docx = new CreateDocx("docx");

    String text = "Lorem ipsum dolor sit amet.";

    HashMap paramsTitle = new HashMap();
    paramsTitle.put("val", "1");
    paramsTitle.put("u", "single");
    paramsTitle.put("sz", "22");
    paramsTitle.put("font", "Blackadder ITC");

    docx.addTitle(text, paramsTitle);
    docx.createDocx(System.getProperty("java.io.tmpdir") …
Run Code Online (Sandbox Code Playgroud)

java tomcat download docx

6
推荐指数
0
解决办法
7351
查看次数

在服务器上运行 svelte dev

我在我的服务器上像这样运行 svelte:

$ npm run dev


  Your application is ready~! 

  - Local:      http://localhost:5000

?????????????????? LOGS ??????????????????
Run Code Online (Sandbox Code Playgroud)

这很棒。但是,当我尝试通过我的公共 ip 访问时,找不到该包。IE 当我<publicIP>:5000在浏览器中输入时。它没有出现。端口是开放的并且可以访问。有没有办法实现这一目标?

请求只是失败。但是如果它在 localhost:5000 上运行,它不应该工作吗?我已经设置了一个节点服务器,我确实可以在端口 5000 上访问它,但是它不能像npm run dev那样正确地提供文件。

javascript node.js server svelte

6
推荐指数
3
解决办法
4637
查看次数

在 JavaScript 中检测点击与触摸

我知道您可以按照以下答案检测浏览器是否在带有触摸屏的设备上运行:/sf/answers/337392051/

但是,我知道有些设备同时具有触摸屏和鼠标。我可以检测出这些类型的触摸之间的差异吗?本质上我想区分 3 个不同的事件:(onClick在单击或触摸时触发),onTouch(仅在触摸时触发),onMouseClick(仅在单击时触发)。

javascript click touch

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

设备锁定时,似乎没有注册devicemotion

我有以下代码,当(移动)设备稍微轻推时会发出蜂鸣声:

let audio = new Audio('ack.mp3');

function handleMotionEvent(event) {
  let x = event.accelerationIncludingGravity.x;
  let y = event.accelerationIncludingGravity.y;    

  if (Math.abs(x) + Math.abs(y) > 2.2) {
    audio.play();
  }
}

window.addEventListener("devicemotion", handleMotionEvent, true);
Run Code Online (Sandbox Code Playgroud)

它工作正常,但在设备锁定时根本不行.在设备锁定时我有什么方法可以检测到这个吗?

javascript mobile android

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