css - 未在 Safari 浏览器中执行操作
问题描述
我在 JSF 中有一个简单的(ajaxified)commandLink,它适用于所有主要浏览器,除了 iphone 上最新的 Safari 浏览器。为了防止双重表单提交,我使用了一个禁用 ajax 开始状态按钮的通用片段:
<h:commandLink id="submit" action="#{ListingBean.searchListings}" value="Search">
<f:ajax onevent="preventDblClick"/>
</h:commandLink>
function preventDblClick(data) {
switch (data.status) {
case "begin":
data.source.disabled = true;
// data.source.className = 'blocked';
break;
case "complete":
data.source.disabled = false;
break;
}
}
问题是,Safari 由于禁用状态而没有提交操作。我还尝试为按钮设置一个 css 规则,以防止多次点击提交:
.blocked {
pointer-events:none
}
但在这种情况下,safari 也不会提交操作。
更新:
生成的html中return false有问题:
<a id="submit"
onclick="mojarra.ab(this,event,'action',0,0,{'onevent':preventDblClick});return false">
Search
</a>
即使我完全删除了 ajax-tag,表单也不会提交,并且生成的输出如下所示:
<h:commandLink id="submit" action="#{ListingBean.searchListings}">
Search
</h:commandLink>
<a id="submit"
onclick="mojarra.jsfcljs(document.getElementById('form-search'),{'submit':'submit'},'');return false">
Search
</a>
为什么return false
会在这里?
由于越来越多的客户使用 iphone/safari:如何解决这个问题?
jsf版本是:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.14</version>
</dependency>
解决方案
推荐阅读
- javascript - 最近我建立了discord bot,主要问题是,我不知道如何设置权限,所以我服务器的每个成员都可以踢和禁止其他人
- javascript - 如何在我的 React 应用程序中隐藏 api 密钥并在 Github 中托管工作版本
- list - 如何使列表中的每个变量都未嵌套?Python
- ios - 如何在 SwiftUI 中限制文本的宽度
- javascript - Nestjs将图片上传到天蓝色
- laravel - 发送密码通知失败时重定向到错误页面
- swift - SourceView 和 SourceRect 折旧了?
- flutter - 滚动时容器如何始终可见
- python - 在 NamedTuple 中使用 NamedTuple 和可选类型
- r - 如果其中有两 (1) 行,则在 R 中每 6 行标记一次