小编Mne*_*quo的帖子

如果我没有使用绑定或单击已绑定事件处理程序,我可以调用jquery click()来跟随<a>链接吗?

我的JavaScript中有一个计时器,需要模拟点击一个链接,一旦时间流逝就转到另一个页面.要做到这一点,我正在使用jQuery的click()功能.我已经使用$().trigger()window.location也,我可以作出打算与所有三个它的工作.

我观察到一些奇怪的行为,click()我试图了解发生了什么以及为什么.

我正在使用Firefox来解决这个问题,但我也对其他浏览器会对此做些什么感兴趣.

如果我没有使用$('a').bind('click',fn)$('a').click(fn)设置事件处理程序,那么调用$('a').click()似乎什么都不做.它不会为此事件调用浏览器的默认处理程序,因为浏览器不会加载新页面.

但是,如果我首先设置一个事件处理程序,那么即使事件处理程序什么都不做,它也会按预期工作.

$('a').click(function(){return true;}).click();
Run Code Online (Sandbox Code Playgroud)

这会加载新页面,就像我自己点击了一样.

所以我的问题是双重的:这种奇怪的行为是因为我在某处做错了吗?click()如果我没有创建自己的处理程序,为什么调用对默认行为不起作用?

编辑:

当霍夫曼确定他试图复制我的结果时,我上面描述的结果实际上并没有发生.我不确定是什么原因引起了我昨天观察到的事件,但我今天肯定这不是我在问题中所描述的.

所以答案是你不能在浏览器中"伪造"点击并且所有jQuery都会调用你的事件处理程序.您仍然可以使用window.location更改页面,这对我来说很好.

javascript firefox jquery events click

175
推荐指数
6
解决办法
42万
查看次数

什么可以解释浏览器间歇性地不加载某些 CORS(跨域)javascript 文件?

我最近将 crossorigin 属性添加到某些脚本标记中,以使我的脚本能够从不同子域的脚本收集错误信息。我在nginx中添加了标头以允许跨域请求。

从那时起,我偶尔会加载页面,而浏览器不会从服务器请求某些 javascript 文件。重新加载页面可以解决该问题,但这种情况已经发生过好几次了。

我认为这与 CORS 有关,但由于它在大多数情况下都有效,所以我不知道如何重现它。

以下是我的代码的一些摘录:

Nginx 配置包含针对某个位置的 javascript 文件的此规则:

add_header 'Access-Control-Allow-Origin' "$http_origin";
Run Code Online (Sandbox Code Playgroud)

我的 php 页面中的脚本标记:

<script type="text/javascript" src="<?php print "$host/js/$filename?v=$version";?>" crossorigin></script>
Run Code Online (Sandbox Code Playgroud)

当我的页面加载时,我可以在 Firebug 中看到脚本标记是正确的,但在 Firebug Net 选项卡中甚至没有显示请求。通常会显示一个请求,即使它使用文件的缓存版本。

我在这里发现了一个我认为可能相关的问题: 我的所有浏览器都没有发送原始标头 但进一步考虑,我认为应该有一个初始请求会失败并会在 Firebug 中显示。

有人对为什么会发生这种情况有任何理论吗?

编辑:我为我的 CORS 请求添加了单独的访问日志。使 Nginx 添加 CORS 标头的位置中的任何文件也会记录在新的访问日志中。

当页面无法加载 JavaScript 文件时,Nginx 会记录一个带有 304 状态(未修改)的请求。这意味着 Nginx 仅在修改后才收到对资源的​​条件请求,并且 Nginx 只发回 304。如果缓存版本未加载 CORS 标头,则可能无法执行 javascript。

我有一个版本号,我将其附加到脚本标记的 src 中,如上所示。此版本号已更改。那么这是否会导致浏览器重新请求所有这些资源,就好像它们具有不同的文件名一样?我认为浏览器应该将这些视为未缓存的资源。不应该有任何可能导致 304 的请求。可能是什么原因导致的?

javascript php nginx http-caching cors

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

寻找积极维护的PHP矩阵数学库

有谁知道我在哪里可以找到一个仍在积极维护的PHP矩阵数学库?

我需要能够进行基本的矩阵运算,如reduce,transpose(包括非平方矩阵),invert,行列式等.

这个问题在过去被问过,然后没有答案就结束了.现在我需要回答同一个问题.请参阅以下相关问题的链接:

PHP中的矩阵艺术? /sf/ask/30455211/

当我看到它们时,我正在安装梨Math_Matrix库,并意识到它对我没用.(感谢Ben在您的问题中提出关于转置的评论.)

我可以自己编写这些东西,但是我会更高兴看到这个地方有一个库.

php math matrix

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

如何在 jQuery 中读取绑定的悬停回调函数

我使用 jQuery 为页面上的元素设置悬停回调。我现在正在编写一个模块,它需要为某些元素临时设置新的悬停行为。新模块无法访问悬停功能的原始代码。

我想在设置新的悬停功能之前存储旧的悬停功能,以便在完成临时悬停行为后可以恢复它们。

我认为这些可以使用jQuery.data()函数存储:

//save old hover behavior (somehow)

$('#foo').data('oldhoverin',???)

$('#foo').data('oldhoverout',???);

//set new hover behavior

$('#foo').hover(newhoverin,newhoverout);
Run Code Online (Sandbox Code Playgroud)

做一些新的悬停行为......

//restore old hover behaviour
$('#foo').hover($('#foo').data('oldhoverin'),$('#foo').data('oldhoverout'));
Run Code Online (Sandbox Code Playgroud)

但是如何从 jQuery 获取当前注册的悬停功能?

Shadow2531,我试图在不修改最初注册回调的代码的情况下做到这一点。否则你的建议会很好。感谢您的建议,并帮助澄清我正在寻找的内容。也许我必须进入jquery的来源并弄清楚这些回调是如何在内部存储的。也许我应该将问题更改为“是否可以在不修改 jquery 的情况下执行此操作?”

javascript jquery callback

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

如何使用elasticsearch重命名处理器和摄取管道重命名包含点的嵌套字段

我在 elasticsearch (5.5.1) 中有一个字段,我需要重命名它,因为该名称包含一个 '.' 它导致了各种问题。我要重命名的字段嵌套在另一个字段中。

我正在尝试在摄取管道中使用重命名处理器来执行重新索引,如下所述:https : //stackoverflow.com/a/43142634/5114

这是我的管道模拟请求(您可以将此逐字复制到 Kibana 中的 Dev Tools 实用程序中进行测试):

POST _ingest/pipeline/_simulate
{
    "pipeline" : {
        "description": "rename nested fields to remove dot",
            "processors": [
            {
                "rename" : {
                    "field" : "message.message.group1",
                    "target_field" : "message_group1"
                }
            },
            {
                "rename" : {
                    "field" : "message.message.group2",
                    "target_field" : "message.message_group2"
                }
            }
            ]
    },
    "docs":[
        {
            "_type": "status",
            "_id": "1509533940000-m1-bfd7183bf036bd346a0bcf2540c05a70fbc4d69e",
            "_version": 5,
            "_score": null,
            "_source": {
                "message": {
                    "_job-id": "AV8wHJEaa4J0sFOfcZI5",
                    "message.group1": 0,
                    "message.group2": "foo"
                },
                "timestamp": 1509533940000 …
Run Code Online (Sandbox Code Playgroud)

pipeline rename elasticsearch reindex

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

RabbitMQ 如何决定何时删除消息?

我想了解RabbitMQ中消息删除的逻辑。

我的目标是即使没有连接到读取它们的客户端也使消息持久化,以便当客户端重新连接时消息正在等待它们。我可以使用持久的惰性队列,以便将消息持久化到磁盘,并且我可以使用 HA 复制来确保多个节点获得所有排队消息的副本。

我希望使用主题或标头路由将消息发送到两个或多个队列,并让一个或多个客户端读取每个队列。

我有两个队列,A 和 B,由标头交换提供。队列 A 获取所有消息。队列 B 仅获取带有“归档”标头的消息。队列 A 有 3 个消费者正在阅读。队列 B 有 1 个消费者。如果 B 的消费者死了,但是 A 的消费者继续确认消息,RabbitMQ 会删除这些消息还是继续存储它们?在重新启动 B 之前,队列 B 不会有任何人使用它,我希望消息保持可用以供以后使用。

到目前为止,我已经阅读了大量文档,但仍然没有找到明确的答案。

high-availability queueing rabbitmq

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

是否有一个python函数返回一个新的dict添加了一个新的键,如clojure中的assoc?

我写了一段时间后写了一段蟒蛇,我有点生疏了,但我正以更实用的方式接近它.为了遵循我在clojure中使用的模式,我想使用map(或list comprehension)和assoc之类的东西在列表中的每个dict中设置键.

我有一个记录列表,我想用列表推导重组它们.

记录看起来像这样:

{
  "timestamp":1232435235315,
  "data": {
    "foo": 2345,
    "bar": 1454
  }
}
Run Code Online (Sandbox Code Playgroud)

我想得到一个包含时间戳和数据键的字典.

newlist = [ assoc(x, "timestamp", x["timestamp"]) for x in mylist ]
Run Code Online (Sandbox Code Playgroud)

我可以很容易地实现一个assoc,但我希望它已经存在于一个库中:

def assoc(coll, k, v):
  newcoll = coll.copy()
  newcoll[k] = v
  return newcoll  
Run Code Online (Sandbox Code Playgroud)

有没有人知道一个已经包含这样的东西的图书馆或一个pythonic的方式简明扼要地做而不改变原始列表?

python dictionary functional-programming list-comprehension clojure

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

在 Javascript 中,是否有一种简单的方法可以像 Array.concat 的相反操作一样获得可链接的数组前置操作?

我正在 Javascript 中进行数组操作,并且我希望能够通过多次调用 map、concat 等来链接操作。

const someAmazingArrayOperation = (list) => 
  list
    .map(transformStuff)
    .sort(myAwesomeSortAlgorithm)
    .concat([someSuffixElement])
    .precat([newFirstElement])
    .filter(unique)
Run Code Online (Sandbox Code Playgroud)

但我遇到的问题是Array.precat不存在。(想想Array.concat,但反过来。)

由于某些原因,我不想修改Array.prototype自己的代码。(https://flaviocopes.com/javascript-why-not-modify-object-prototype/

我完全可以使用Array.concat我的数组并将其连接到前缀数组的末尾并继续。但这并不与其他东西联系在一起,而且它使我的代码看起来很笨拙。

这是一个小问题,因为我可以轻松编写代码来获得我想要的输出。但这是一件大事,因为我希望我的代码看起来干净,而这似乎是数组原型中缺失的一部分。

有没有办法在不修改内置类型原型的情况下得到我想要的东西?

有关假设的 Array.precat 的更多信息,另请参阅: concat,但前置而不是附加

javascript arrays

0
推荐指数
1
解决办法
57
查看次数