2010-11-09 84 views
0

我想单击一个链接,拉动链接的src,并使用该src刷新页面中的iframe。如何更改src并使用DOJO重新加载iframe?

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 SRC属性被更新,但onclick事件不会取消,该页面的行为就像链接被点击一样。它看起来好像dojo.stopEvent(e);不工作(询问在哪里下载MP3文件)。此外,iframe不重新加载,但我相信这是由于点击没有被取消。

更新: 我是错误,而不是代码!我链接到MP3和安置MP3的页面(长篇故事)。有用。谢谢。

+0

什么是OG的Javascript?从来没有听说过。为什么'el.src = url'不够?它太简单了吗?你需要指数时间算法来完成这项任务?你用'dojo.add'添加两个数字是因为'+'不够复杂? – galambalazs 2010-11-09 19:44:02

+0

@galambalazs我不是捍卫DOJO的实施,坦率地说,我已经看到了更好的图书馆。但由于我正在努力学习图书馆的原因与我的个人偏好无关,所以我提出了一个诚实的问题。所以这个问题的答案非常重要。至于OG,这意味着原来的黑帮,这是一个有趣的说法,真正的JavaScript,我喜欢的那种。 – 2010-11-09 19:49:58

回答

2

您以错误的方式附加click事件,应该使用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,请参阅上文。 – 2010-11-09 20:06:02