2013-04-26 148 views
0

我制作了带有社交链接的图片的图片地图。但是,当我将链接更改为在新窗口中打开时,我丢失了我的OnMouseOver游标。顺便说一句,这全是在JavaScript中。我试图把它放进去,但它似乎并没有在任何地方工作。当我点击图像时,它们会进入一个新窗口,但光标不会改变,因此用户不知道它们在链接上。代码如下。OnMouseOver功能不起作用

任何关于如何恢复的想法都会很棒。谢谢!

document.getElementById('topdiv').innerHTML = "<img border=\"0\" style=\"padding-right: 10px;\" src=\"../images/social_hor.png\" usemap=\"#socialmap\"><map name=\"socialmap\"><area shape=\"rect\" coords=\"320,0,365,50\" onClick=\"window.open('https://www.facebook.com/NCHSoftware')\" OnMouseOver='this.style.cursor='pointer';'><area shape=\"rect\" coords=\"375,0,420,50\" onClick=\"window.open('https://plus.google.com/+nchsoftware')\"><area shape=\"rect\" coords=\"425,0,470,50\" onClick=\"window.open('https://twitter.com/nchsoftware')\">" 

回答

1

所以我翻译这,你在你的问题贴太可怕了线(我想这就是为什么人们没有给你任何问题考虑),我想出了这个例子给你,当然你仍然需要在页面中正确实现它。

CSS

myImage { 
    padding-right: 10px; 
} 

HTML

<div id="topdiv"></div> 

的Javascript

var topdiv = document.getElementById('topdiv'), 
    map, 
    tempVar; 

function area1() { 
    alert("you clicked in area1"); 
} 

function area2() { 
    alert("you clicked in area2"); 
} 

function area3() { 
    alert("you clicked in area3"); 
} 

function pointerOn(evt) { 
    evt.target.style.cursor = "hand"; 
} 

function pointerOff(evt) { 
    evt.target.style.cursor = "auto"; 
} 

map = document.createElement("map"); 
map.name = "socialmap"; 

tempVar = document.createElement("area"); 
tempVar.shape = "rect"; 
tempVar.coords = "0,0,99,50"; 
tempVar.href = "#"; 
tempVar.addEventListener("click", area1, false); 
tempVar.addEventListener("mouseover", pointerOn, false); 
tempVar.addEventListener("mouseout", pointerOff, false); 
map.appendChild(tempVar); 

tempVar = document.createElement("area"); 
tempVar.shape = "rect"; 
tempVar.coords = "100,0,199,50"; 
tempVar.href = "#"; 
tempVar.addEventListener("click", area2, false); 
tempVar.addEventListener("mouseover", pointerOn, false); 
tempVar.addEventListener("mouseout", pointerOff, false); 
map.appendChild(tempVar); 

tempVar = document.createElement("area"); 
tempVar.shape = "rect"; 
tempVar.coords = "200,0,299,50"; 
tempVar.href = "#"; 
tempVar.addEventListener("click", area3, false); 
tempVar.addEventListener("mouseover", pointerOn, false); 
tempVar.addEventListener("mouseout", pointerOff, false); 
map.appendChild(tempVar); 

topdiv.appendChild(map); 

tempVar = document.createElement("img"); 
tempVar.className = "myImage"; 
tempVar.src = "http://i860.photobucket.com/albums/ab165/ATnightshift/image001.gif"; 
tempVar.useMap = "#socialmap"; 
topdiv.appendChild(tempVar); 

jsfiddle

+0

非常感谢!是的,我是初学者。试图将它们拼凑在一起是一个缓慢的过程。感谢您的帮助! – user2311979 2013-04-29 16:56:39

+0

希望你不介意我再次窃听你,我敢肯定,如果我这样做,它会弄乱你的干净的代码。所以有一个蓝色的边框,链接不会在新窗口中打开。所以我基本上回到了我开始的地方,但显然是一个更有效的方式来写出来。你介意告诉我如何解决这两件事?谢谢! – user2311979 2013-04-29 17:40:25

+0

你真的需要打开一个新的问题,包括你的改变的代码和链接给你jfsiddle,然后我们可以看看这个特定的问题。 – Xotic750 2013-04-29 17:55:37