My website shows results for a google image search. When a user clicks on a image I do not want him to get redirected to the source page of the image. Instead it's supposed to do something else. So I am trying the prevent method but it doesn't work.
The class name for the imagegs-image-box
so I use this as a reference for my codes. I think the problem is that the images get loaded into the site after the script (prevent default method is being executed). But I don't know how to solve this. Can anyone help? Thanks in advance
<html>
<head>
<style>
#searchForm {
visibility: hidden;
}
.gs-text-box, .gsc-cursor, .gsc-title, .gsc-twiddleRegionCell, .gsc-above-wrapper-area{
visibility: hidden;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script src="https://www.google.com/jsapi"
type="text/javascript"></script>
<title>blub blie bla</title>
</head>
<body>
<div align="center">Hi
<div id="searchresults">
<input id="inputfield" value="Type something in here" onfocus="if(value=='Type something in here') value = ''"
oninput="myTest()"/>
<div id="searchcontrol"></div>
</div>
</div>
<div id="searchForm"></div>
<script>
//google search api from the homepage
google.load('search', '1');
function OnLoad(element) {
var searchControl = new google.search.SearchControl();
var drawOptions = new google.search.DrawOptions();
drawOptions.setSearchFormRoot(document.getElementById("searchForm"));
searchControl.setResultSetSize(2);
searchControl.addSearcher(new google.search.ImageSearch());
searchControl.draw(document.getElementById("searchcontrol"), drawOptions);
searchControl.execute(element);
}
//executes search after text is typed in the input field
function myTest(){
var x = document.getElementById("inputfield").value;
if (x.length > 1){
google.setOnLoadCallback(OnLoad( document.getElementById("inputfield").value));
//my different approaches to prevent the image from linking to a webpage
$(function() {
$('.gs-image-box').click(function(e){
e.preventDefault();
});
});
document.getElementsByClassName("gs-image-box")[0].addEventListener("click", function(event){
event.preventDefault()
});
}
}
</script>
</body>
</html>
I believe the problem is that images with classname
.gs-image-box
do not exist (yet) when the binding is made.You need to bind it to something that exists, e.g.
Of course, you don't have to use document. Any parent that exists will do.