相关疑难解决方法(0)

如果我没有使用绑定或单击已绑定事件处理程序,我可以调用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万
查看次数

禁用移动浏览器上的悬停效果

我正在编写一个旨在从台式机和平板电脑上使用的网站.当从桌面访问它时,我希望屏幕的可点击区域点亮:hover效果(不同的背景颜色等).使用平板电脑,没有鼠标,所以我不想要任何悬停效果.

问题是,当我在平板电脑上点击一些东西时,浏览器显然有某种"隐形鼠标光标",它移动到我点击的位置,然后将其留在那里 - 所以我刚刚点击的东西点亮了悬停效果,直到我点击其他东西.

我在使用鼠标时如何获得悬停效果,但在使用触摸屏时抑制它们?

如果有人想提出建议,我不想使用用户代理嗅探.同样的设备可能同时具有触摸屏和鼠标(今天可能不常见,但将来会更加如此).我对该设备不感兴趣,我对它目前的使用方式感兴趣:鼠标或触摸屏.

我已经尝试挂钩touchstart,touchmovetouchend事件,并呼吁preventDefault()对所有的人,这确实抑制"隐形鼠标"的一些时间; 但是如果我在两个不同的元素之间来回快速点击,经过几次点击它就会开始移动"鼠标光标"并点亮悬停效果 - 这就像我preventDefault并不总是很荣幸.除非必要,否则我不会厌倦你的细节 - 我甚至不确定这是正确的方法; 如果有人有更简单的解决方案,我会全力以赴.


编辑:这可以用沼泽标准的CSS :hover重现,但这里有一个快速的repro供参考.

<style>
  .box { border: 1px solid black; width: 150px; height: 150px; }
  .box:hover { background: blue; }
</style>
<div class="box"></div>
<div class="box"></div>
Run Code Online (Sandbox Code Playgroud)

如果你鼠标悬停在其中任何一个框上,它将获得我想要的蓝色背景.但是如果你点击其中任何一个盒子,它也会得到一个蓝色背景,这是我试图阻止的事情.

我还在这里发布了一个示例,它可以完成上述操作并且还可以挂钩jQuery的鼠标事件.您可以使用它来查看点击事件也会触发mouseenter,mousemove以及mouseleave.

javascript hover touch

111
推荐指数
6
解决办法
10万
查看次数

确定用户是否从移动Safari导航

我有一个应用程序,我想根据用户导航的位置将用户重定向到不同的页面.

如果从Web剪辑导航,请不要重定向.如果从移动版Safari导航,请重定向到safari.aspx.如果从其他任何地方导航,请重定向到unavailable.aspx

我能够使用iPhone WebApps,有没有办法检测它是如何加载的?主屏与Safari?确定用户是否从Web剪辑导航,但我无法确定用户是否在iPhone或iPod上从移动Safari导航.

这就是我所拥有的:

if (window.navigator.standalone) {
    // user navigated from web clip, don't redirect
}
else if (/*logic for mobile Safari*/) {
    //user navigated from mobile Safari, redirect to safari page
    window.location = "safari.aspx";
}
else {
    //user navigated from some other browser, redirect to unavailable page
    window.location = "unavailable.aspx";
}
Run Code Online (Sandbox Code Playgroud)

javascript iphone mobile-safari web-clips

56
推荐指数
6
解决办法
5万
查看次数

Android中的事件onLongPress有多长时间了?

Android支持onLongPress上的事件.我的问题是"多长时间"(以毫秒为单位)是触发事件的"按压"?

events android gesture

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

jQuery(Swipe vs. Touch)pageX和pageY一直返回0

我在iPhone上玩touchstart和touchend事件.我构建了一个具有div的示例页面,如果您触摸它并滚动页面,它应该返回开始和结束位置的y坐标.

链接:http://jsbin.com/ibemom/2

jQuery:

var touchStartPos;

$('.theDiv')
  .bind('touchstart', function(e){
    touchStartPos = e.pageY;
  })
  .bind('touchend', function(e){
    alert(touchStartPos + ' | ' + e.pageY)
  })   
Run Code Online (Sandbox Code Playgroud)

但是,当我在iPhone上加载该页面时,警报会将两个值都报告为零.有人看到我有什么问题吗?

更新:

我偶然发现了jQuery Mobile项目中的这段代码:https://github.com/jquery/jquery-mobile/issues/734

它的评论突出:

 // (in iOS event.pageX and event.pageY are always 0 )
Run Code Online (Sandbox Code Playgroud)

它没有说明为什么会这样,但至少我发现其他人看到了同样的事情.将挖掘该页面上的示例代码以查看解决方案是否存在.

更新II:

好吧,在查看上面链接中的示例代码后,看起来这将返回一个实际值:

e.originalEvent.touches[0].pageY
Run Code Online (Sandbox Code Playgroud)

问题是,我现在意识到这不是我需要的.它将我附加事件的对象触摸区域的Y偏移返回到与HTML文档相关的...而不是浏览器窗口.

我的目标是弄清楚触摸开始的位置和结束位置......然后比较值.如果它们有点不同,那么我们就会进行滑动...而不是触摸.

更新III:

我也找到了这些例子的参考:

e.originalEvent.touches[0].pageX

event.targetTouches[0].pageY
Run Code Online (Sandbox Code Playgroud)

虽然我似乎无法让那些工作.两者都返回未定义的错误.

更新IV:

看起来一种解决方案是跟踪文档本身的offset().我可以将touchend事件应用于文档,然后检查它的偏移量.

这个问题是我的touchend事件将首先触发我页面上的元素,然后它会在文档上触发它(冒泡).因此,在我需要弄清楚如何对象touchend事件之前,我无法确定它是触摸还是滑动.

还在思考这一个......

jquery touch-event swipe-gesture pagey

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

:hover 在 ios 移动设备上变成双触摸而不是悬停

首先,这不是以下内容的克隆:iPad/iPhone 悬停问题导致用户双击链接, 因为我想要一个纯 CSS 的答案。此链接中的所有答案都需要 js 或 jQuery,而一个 CSS 答案涉及背景图像。我正在尝试更改不透明度,仅此而已。

CSS 想要将自己推向移动革命,但我看到的用于创建悬停效果的简单“touchDown”(又名触摸悬停)的每个解决方案都需要 javascript 或 jQuery。

下面是一些简单的代码来说明我的意思:

.btn {
  border-radius: 5px;
  display: block;
  opacity: 1; <--from
  background: red;
  text-align: center;
  line-height: 40px;
  font-weight: bold;
  &:hover {
    opacity:.7; <--to
    transition: opacity .2s ease-out; <--fun fade animation :)
    -moz-transition: opacity .2s ease-out;
    -webkit-transition: opacity .2s ease-out;
    -o-transition: opacity .2s ease-out;
  }
}
Run Code Online (Sandbox Code Playgroud)

在 Chrome 和 Safari 中测试

css hover touch ios

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

iPad/iPhone双击问题

我遇到与iPad/iPhone悬停问题非常类似的问题导致用户双击链接,用户点击链接必须点击两次以实际转到它.

我在那个问题中实现了解决方案,但我现在遇到了一个新问题.当用户点击链接时会发生重定向,但无论如何都会发生.因此,即使用户试图滚动页面,并且他们在链接上开始滚动,页面也会在他们放开滚动时重定向.

有没有办法保持链接,以便他们只需要一次点击,但如果他们滚动,不要重定向页面?

html iphone mobile jquery ipad

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