2010-11-09 5 views
0

Я хочу щелкнуть ссылку, потянуть src ссылки и использовать этот src для обновления iframe на моей странице.Как изменить src и перезагрузить iframe с помощью DOJO?

dojo.ready(function() { 
    dojo.query(".link").onclick(function(e) { 
    var node = e.target; 
    var url  = dojo.attr(node, "href"); 
    document.getElementById("audioiframe").src = url; 
    dojo.stopEvent(e); 
    }); 
}); 

Я мог бы сделать это быстро в OG Javascript или JQuery, но нужно использовать Dojo.

Спасибо

UPDATE: После включения Strife25 ответа моего кода:

dojo.ready(function() { 
    dojo.query(".audiolink").forEach(function(link){ 
     dojo.connect(link, "onclick", null, function(e){ 
     var node = e.target; 
     var url  = dojo.attr(node, "href"); 
     dojo.query("#audioiframe").attr("src", url); 
     dojo.stopEvent(e); 
     }); 
    }); 
}); 

События прикрепляются к ссылкам атрибут IFrame ЦСИ обновляется, но событие OnClick не отменяется и страница ведет себя так, как если бы была нажата ссылка. Кажется, что dojo.stopEvent(e); не работает (спрашивая, где скачать файл MP3). Кроме того, iframe не перезагружается, но я считаю, что это связано с тем, что клик не отменяется.

UPDATE: Я ошибка, а не код! Я связывался с MP3 по сравнению со страницей, в которой размещался MP3 (длинная история). Оно работает. Спасибо.

+0

Что OG Javascript? Никогда не слышал об этом. Почему именно «el.src = url» недостаточно? Это слишком просто? Для выполнения этой задачи нужен алгоритм экспоненциального времени? Вы добавляете два числа с 'dojo.add', потому что' + 'недостаточно сложный? – galambalazs

+0

@galambalazs Я не защищаю реализацию DOJO, честно говоря, я видел лучшие библиотеки. Но я задаю честный вопрос, поскольку я работаю над изучением библиотеки по причинам, не связанным с моими личными предпочтениями. Поэтому ответ на этот вопрос очень важен. Что касается OG, то это означает «Оригинальный гангстер», который является интересным способом сказать, настоящий javascript, такой, какой я люблю. –

ответ

2

Вы присоединяете событие клика не по-другому, вы должны использовать dojo.connect для присоединения обработчиков событий. Кроме того, dojo.query() возвращает NodeList, когда он запускается вместо одного узла.

Правильный способ использования додзё в данном случае было бы:

dojo.query(".link").forEach(function(link){ 
    dojo.connect(link, "onclick", null, function(e){ 
     //do your stuff 
    }); 
}); 

Если у вас есть только одна кнопка, которая выполняет событие OnClick вы предлагаете, вы должны использовать dojo.byId так:

var link = dojo.byId("linkId"); //retrieves a reference to a DOM node with the given id 
dojo.connect(link, "onclick", null, function(e){ 
    //do you stuff 
}); 

Вот страница документа из dojo.connect, который также объясняет, как вы можете очистить обработчик событий на уничтожении объекта/странице выгрузку: http://www.dojotoolkit.org/reference-guide/dojo/connect.html

+0

Я обновил вопрос, похоже, что onclick не возвращает false, см. Выше. –

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