我的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更改页面,这对我来说很好.
我最近将 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 的请求。可能是什么原因导致的?
有谁知道我在哪里可以找到一个仍在积极维护的PHP矩阵数学库?
我需要能够进行基本的矩阵运算,如reduce,transpose(包括非平方矩阵),invert,行列式等.
这个问题在过去被问过,然后没有答案就结束了.现在我需要回答同一个问题.请参阅以下相关问题的链接:
当我看到它们时,我正在安装梨Math_Matrix库,并意识到它对我没用.(感谢Ben在您的问题中提出关于转置的评论.)
我可以自己编写这些东西,但是我会更高兴看到这个地方有一个库.
我使用 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 的情况下执行此操作?”
我在 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) 我想了解RabbitMQ中消息删除的逻辑。
我的目标是即使没有连接到读取它们的客户端也使消息持久化,以便当客户端重新连接时消息正在等待它们。我可以使用持久的惰性队列,以便将消息持久化到磁盘,并且我可以使用 HA 复制来确保多个节点获得所有排队消息的副本。
我希望使用主题或标头路由将消息发送到两个或多个队列,并让一个或多个客户端读取每个队列。
我有两个队列,A 和 B,由标头交换提供。队列 A 获取所有消息。队列 B 仅获取带有“归档”标头的消息。队列 A 有 3 个消费者正在阅读。队列 B 有 1 个消费者。如果 B 的消费者死了,但是 A 的消费者继续确认消息,RabbitMQ 会删除这些消息还是继续存储它们?在重新启动 B 之前,队列 B 不会有任何人使用它,我希望消息保持可用以供以后使用。
到目前为止,我已经阅读了大量文档,但仍然没有找到明确的答案。
我写了一段时间后写了一段蟒蛇,我有点生疏了,但我正以更实用的方式接近它.为了遵循我在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
我正在 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,但前置而不是附加