我已经有一个可用的代码来禁用长按 但现在我不想通过ID获取元素。我不可能为每个特定项目添加Id。 我想让它适用于名称标签中的每个img。 但是,它现在不能正常工作。请帮忙。
原始工作线: preventLongPressMenu(的document.getElementById(' theimage'));
编辑线: preventLongPressMenu(document.getElementByTagName(' body img'));
整个代码:
<!DOCTYPE html>
<html>
<head>
<script>
function absorbEvent_(event) {
var e = event || window.event;
e.preventDefault && e.preventDefault();
e.stopPropagation && e.stopPropagation();
e.cancelBubble = true;
e.returnValue = false;
return false;
}
function preventLongPressMenu(node) {
node.ontouchstart = absorbEvent_;
node.ontouchmove = absorbEvent_;
node.ontouchend = absorbEvent_;
node.ontouchcancel = absorbEvent_;
}
function init() {
preventLongPressMenu(document.getElementByTagName('body img'));
}
</script>
<style>
*:not(input):not(textarea) {
-webkit-user-select: none; /* disable selection/Copy of UIWebView */
-webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
}
</style>
</head>
<body onload="init()" id="theimage" >
<img src="http://www.google.com/logos/arthurboyd2010-hp.jpg" width="400">
</body>
</html>
答案 0 :(得分:1)
您拼错了方法名称,而没有传递正确的字符串。它是getElementsByTagName
(注意元素上的s
),您只需传递标记的名称而不是css选择器。您还必须修改函数以循环结果,因为它将是节点列表
preventLongPressMenu(document.getElementsByTagName('img'));
function preventLongPressMenu(nodes) {
for(var i=0; i<nodes.length; i++){
nodes[i].ontouchstart = absorbEvent_;
nodes[i].ontouchmove = absorbEvent_;
nodes[i].ontouchend = absorbEvent_;
nodes[i].ontouchcancel = absorbEvent_;
}
}
如果手机上的浏览器支持,您还可以使用querySelector / querySelectorAll,这样您就可以使用css选择器来选择元素了
preventLongPressMenu(document.querySelectorAll('body img'));
function preventLongPressMenu(nodes) {
for(var i=0; i<nodes.length; i++){
nodes[i].ontouchstart = absorbEvent_;
nodes[i].ontouchmove = absorbEvent_;
nodes[i].ontouchend = absorbEvent_;
nodes[i].ontouchcancel = absorbEvent_;
}
}
答案 1 :(得分:0)
public class MetadataTypeConverter implements DynamoDBTypeConverter<String, Metadata> {
@Override
public String convert(final Metadata metadata) {
String metadataValue = null;
try {
.....
.....
your custom code
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return metadataValue;
}
@Override
public Metadata unconvert(final String jsonData) {
Metadata metadataType = null;
try {
.....
.....
your custom code
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return metadataType;
}
}
:for
所以,而不是这个:
function preventLongPressMenu(node) {
node.on('touchstart', absorbEvent_);
node.on('touchmove', absorbEvent_);
node.on('touchend', absorbEvent_);
node.on('touchcancel', absorbEvent_);
}
这样做:
function init() {
preventLongPressMenu(document.getElementByTagName('body img'));
}
来自Google CDN:
function init() {
preventLongPressMenu($('body img'));
}
或来自Microsoft CDN:&#34;我更喜欢Google! :)&#34; 强>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
最好是从两个CDN中的一个下载文件并将其作为本地文件放置,这样您网站的启动加载速度就会更快!
对我而言,它似乎比使用DOM简单得多,我喜欢JQuery! :)