小编Mal*_*hak的帖子

使用Chrome内容脚本添加复杂的HTML

我正在使用Chrome扩展程序的内容脚本来创建添加到网页上的复杂显示.

我首先将它直接集成在一个网站上进行测试,但现在我需要把它放在一个扩展中.

问题是Chrome的内容脚本API只允许注入javascript.这意味着,为了注入复杂的HTML布局,我需要完全用JS对象来编写它,这很难编写,难以维护并且绝对不是设计人员友好的.

我想知道是否有人知道或者可以想到一个聪明的方法来获得更好的工作流程.

javascript html5 google-chrome google-chrome-extension content-script

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

Jquery查找类型的第一个直接子项

我正在寻找一种方法来找到一个精确类型的元素的第一个直接子元素.

让我们想象一下这个标记:

<div id="mainDiv">
    <div id="otherDiv">
        <p> Stuff </p>
    </div>
    <p> Stuff 2 </p>
    <p> Stuff 3 </p>
</div>
Run Code Online (Sandbox Code Playgroud)

所以在这里,我想得到的是"Stuff 2"第一段是直接的孩子.

如果使用jquery我做的事情就像$('#mainDiv').find('p:first');我会在第一个div中得到段落.

我需要的是忽略嵌套的子项,只采用第一个直接的子项.我该怎么办?

html javascript jquery dom

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

Mongoose为现有字段返回undefined

在mongoose请求之后,我有我的文档doc,这是查询的结果

这是使用的模式

var searchSchema = new mongoose.Schema({
    original : String,
    images : [String],
    image: String
});
Run Code Online (Sandbox Code Playgroud)

该模型 :

var searchModel = mongoose.model('Search', searchSchema);
Run Code Online (Sandbox Code Playgroud)

使用的代码:

searchModel.findOne({original : input}, function (err, doc) {
    if (err) {
        console.log(err);
    }
    if (typeof doc !== "undefined") {
        console.log(doc);
                    console.log(doc.image);
    }
});
Run Code Online (Sandbox Code Playgroud)

第一个console.log:

{ 
    _id: 531401bf714420359fd929c9,
    image: 'http://url.com/image.jpg',
    original: 'lorem ipsum dolor sit amet' 
}
Run Code Online (Sandbox Code Playgroud)

第二个返回undefined,但前一个确实显示现有image属性,这意味着它存在.

我的架构没有什么特别之处,所以我不明白这里可能会发生什么.

javascript mongoose mongodb

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

node.js中的低优先级作业

基于节点使用单个线程来管理所有内容的事实,我很好奇我应该如何处理低优先级的工作

这项工作是不断运行和分析数据(假设它是一个setTimeout),但它确实需要花费很多时间,我希望它在调度程序中具有非常低的优先级.

我不认为我可以在一个单独的进程中运行它,因为我需要经常修改它的工作指令(它使用我的主进程的变量,所以它需要能够不断访问它们).

您可以将其视为一大堆任务,它将不断工作,但这些任务的工作集由主进程控制.

  • 一个单独的过程需要两者之间不断的请求来交换数据,所以这似乎是一个坏主意
  • 一个单独的线程,比如Web工作者,可能会更快吗?我不知道节点是否支持它们
  • 最好的事情是它是一个在计时器上运行的简单事件函数,它遵循节点的原则,但我需要以某种方式告诉调度程序在这个函数上花费的时间少于程序的其余部分.这有什么办法吗?

javascript multithreading node.js

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

HTML5 中的本地编辑器

我想知道 HTML5 的当前状态是否可以编辑本地文件。更准确地说,我的意思是:

  • 文件不是由服务器提供的(它们在 上file://),或者在最坏的情况下,由本地服务器提供
  • 编辑器要么在本地文件系统上,要么由外部服务器提供服务
  • 如果我不使用浏览器扩展程序会更好
  • 总体目标是创建一个不需要重新加载页面或手动插入文件的在线 IDE

我知道有 fileSystem API,但从我读到的内容来看,它似乎仅适用于 chrome 扩展?那么监听文件更改呢?

我还在trace.gl上注意到,可以创建点击后打开本地文本编辑器的链接(就像在 chrome 控制台中一样)。

是否可以重现我们可以看到的内容,trace.gl但结合访问本地文件系统和监听文件更改事件,以创建某种本地 IDE 为目标?

更精确地编辑:目标实际上是创建一个 IDE。想想代码 IDE (Eclipse ...) 的例子,它显示工作区中的每个文件和目录,并听取更改,可以实时读/写等。这就是我想要实现的。PS:如果需要,它可能是特定于浏览器的

html javascript ide google-chrome html5-filesystem

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

如何处理 useEffect 在 strictMode 中被调用两次而只应运行一次的事情?

我知道 React 在严格模式下调用 useEffect 两次,这个问题是关于询问正确的处理方法是什么。

\n

我最近遇到了一个问题,React useEffectstrictMode. 我想保持严格模式以避免出现问题,但我没有看到任何好的方法来确保某些特定效果仅运行一次。这是在一个next.js环境中,我特别希望代码只在客户端中运行一次。

\n

例如,给定以下组件:

\n
import React, { useState, useEffect } from "react";\nimport ky from "ky";\n\nconst NeedsToRunOnce: React.FC = () => {\n  const [loading, setLoading] = useState(false);\n\n  const doSomethingThatOnlyShouldHappenOnce = (data: any) => {\n    // Do something with the loaded data that should only happen once\n    console.log(`This log appears twice!`, data);\n  };\n\n  useEffect(() => {\n    if (loading) return;\n    console.log("This happens twice despite trying to set loading to …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs next.js

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

RequestAnimationFrame调用时间根据我的画布大小而变化

在我的应用程序中,我有一个CSS大小(CSS,而不是html)更新的画布,具体取决于窗口大小.

我有一个主要的gameplayLoop,看起来像这样:

run = function(){

    console.log(timerDiff(frameTime));

    game.inputManage();
    game.logics();
    game.graphics.animate();
    game.graphics.render();

    frameTime = timerInit();

    requestAnimFrame(run);

}
Run Code Online (Sandbox Code Playgroud)

我的requestAnimFrame函数来自Paul Irish:

window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       || 
          window.webkitRequestAnimationFrame || 
          window.mozRequestAnimationFrame    || 
          window.oRequestAnimationFrame      || 
          window.msRequestAnimationFrame     || 
          function( callback ){
            window.setTimeout(callback, 1000 / 60);
          };
})();
Run Code Online (Sandbox Code Playgroud)

所以基本上问题是我记录的定时器测量requestAnimFrame调用和有效函数调用之间的时间完全改变.如果我的浏览器是全屏的,我会得到50/60毫秒,如果我有一个小窗口,我可以达到10毫秒.

由于requestAnimFrame调用应该在60fps节奏下持续调用函数(我认为这类似于30 ms)我不应该有这种结果,因为在计时器的创建和检查之间基本上没有发生任何事情,除了requestAnimFrame

我也有一些反复的微冻结(不到一秒钟),每2/3秒发生一次.但是计时器没有检测到任何时间的变化(就像javascript的时间计数器被阻止一样)

我的定时器功能是这样的,但这并不重要

timerInit = function()
{
    return new Date();
}

timerDiff = function(datePrev)
{
    return new Date().getTime() - datePrev.getTime();
}
Run Code Online (Sandbox Code Playgroud)

javascript html5 canvas requestanimationframe

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

如何避免从项目的父目录而不是 node_modules 解析 TypeScript 模块?

我有一个安装在 中的模块node_modules,并且想从中导入一个文件。

我在我的项目所在的父目录中也有这个模块的本地安装版本。

出于某种原因,当我这样做时import { something } from 'my-module/myFile',它实际上不是通过进入来解决它node_modules,而是通过获取存储在我机器中其他位置的该模块的本地版本,在父目录中。

为什么 TypeScript 会解析正在构建的目录之外的模块?它怎么能在它自己的文件夹之外找到我的模块,而不仅仅是在节点模块中找到它?

typescript

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