2014-01-29 3 views
0

Я очень новичок в Javascript, поэтому не знаю слишком многого. Я хочу, чтобы пользователь нажал эту фигуру и открыл ее. Вот мой код:Открытая ссылка при нажатии мыши

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

Я не знаю, если это даже близко к правой, но я не могу найти ответ.

EDIT: Это код, который я добавил на это: 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' предполагает, что вы ссылаетесь на тег объекта. Если «stage» - это класс или 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') 

EDIT:

Использование функций по ссылке вы предоставили, ваша функция должна быть:

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

.. так что это будет отправьте браузер на ваш URL-адрес, в любое время, когда пользователь нажимает на что-либо, что имеет НИЧЕГО, как его значение «shape». Вы можете использовать (shape === 'circle') или что-то еще, если хотите уточнить, на что они нажали. («круг» - это предположение, ваши фактические значения формы могут отличаться)

+0

Это не работает. Проверьте отредактированную ссылку в моем сообщении; Мой код в основном такой же. – user2397282

+0

«в основном» то же самое, значит «не» то же самое. Мое решение предполагает, что вы включили библиотеку jQuery (поскольку вы отметили проблему с jQuery). Когда вы говорите: «Это не работает», вы смотрите на консоль, чтобы узнать, какие ошибки вы получаете? – relic

0

Используйте window.location = "[My link goes here]";, чтобы перейти к другому URL.

+0

Это далеко не полный ответ на вопрос. – Joeytje50

+1

@RickS Они действуют одинаково, когда вы назначаете им URL. [Разница между 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 обработчик события Click:

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

Если это не то, что вы искали, пожалуйста, ответить на этот ответ объяснить, что вы хотите, чтобы это сделать ,

See demo.

PS: в этом скрипте вы ничего не предпринимаете с элементом, который вызвал событие click, но вы сохраните его в переменной shape. Я включил это, чтобы продемонстрировать, как получить элемент, вызвавший событие, но в этом скрипте эту строку можно опустить.

Смежные вопросы