2014-01-29 740 views
0

我对Javascript很新,所以我不知道太多。我希望用户点击此形状并打开链接。这里是我的代码:当鼠标点击时打开链接

stage.on('mousedown', function(OpenLink) { 
    var shape = evt.targetNode; 
    if (shape) { 
     Application.OpenURL("[My link goes here]"); 
    } 
    }); 

我不知道这是否接近正确,但我似乎无法找到答案。

编辑:这是我加入到这个代码:http://www.html5canvastutorials.com/labs/html5-canvas-interactive-building-map/

+4

什么是'stage',什么是'Application',什么是'OpenURL',什么是'evt'等等? – adeneo

+0

是这个Kinetic.js? –

+0

可能是错误的,但我相信事件处理程序的*** jQuery ***参数是事件对象。 (即'OpenLink'是一个事件对象,'evt'未定义)。您可能想查看[docs](http://api.jquery.com/on/)... – War10ck

回答

0

认为这应该工作。 'stage'假定你引用了object标签。如果'阶段'是一个类或ID,则需要相应更新。

$('stage').mousedown(function(ev){ // Attach mousedown listener 
    if (ev.target.targetNode) { // if clicked object has 'targetNode' 
    ev.preventDefault(); // prevent additional bubbling 
    window.location.href = 'http://www.google.com'; // Send browser to url 
    } 
}); 

您还可以将点击的对象上的url作为属性或数据存储,并在单击时抓取它。

<thing data-myUrl="www.website.com"></thing> 

..和:

window.location.href = $(ev.target).data('myUrl') 

编辑:

使用功能,从您提供的链接,你的功能应该是:

stage.on('mousedown', function(evt) { 
    var shape = evt.targetNode; 
    if (shape) { 
    window.location.href = 'http://www.google.com'; 
    } 
}); 

..所以这将只要用户点击任何具有任何“形状”值的任何内容,就可以将浏览器发送到您的网址。你可以使用(shape === 'circle')或其他什么,如果你想更具体地说明他们点击了什么。 ('circle'是一个猜测,你的实际形状值可能不同)

+0

这似乎并不奏效。检查我的帖子中编辑的链接;我的代码基本上与此相同。 – user2397282

+0

“基本上”是一样的,意思是“不”相同。我的解决方案假定你有jQuery库(因为你用jQuery标记问题)。当你说“这似乎不起作用”时,你在看你的控制台,看看你得到什么错误? – relic

0

使用window.location = "[My link goes here]";导航到另一个URL。

+0

这到目前为止还不是问题的完整答案。 – Joeytje50

+1

@RickS当你给他们分配网址时,他们的行为是一样的。 [window.location和location.href之间的区别](http://stackoverflow.com/questions/9903659/difference-between-window-location-and-location-href) – Givi

+0

@RickS没有区别。 – War10ck

0

我假设你已经安装了jQuery,考虑到你的问题中包含了jQuery标签。如果不是看到http://jquery.com

您可以通过一个jQuery的单击事件处理程序做到这一点:

$('.stage').mousedown(function(e) { 
    var shape = e.target; 
    window.location.href = 'http://example.com'; 
}); 

如果这不是你要找的人,请回复此答案解释你想让它做什么。

See demo。 PS:在这个脚本中,你不会对触发点击事件的元素做任何事情,但是你将它存储在shape变量中。我纯粹用这个来演示如何获取触发事件的元素,但在这个脚本中,该行可以省略。