将“onclick”应用于iFrame中的所有元素

时间:2009-04-15 21:45:38

标签: iframe onclick

如何使用JavaScript DOM将onclick个事件应用于iframe内的链接?

这是我正在尝试的不起作用:

document.getElementById('myIframe').contentDocument.getElementsByTagName('a').onclick = function();

似乎没有错误,我完全控制了iframe中的内容。

以下是一些要测试的代码,看看我是否至少可以计算div中有多少iframe

// access body
var docBody = document.getElementsByTagName("body")[0];

// create and load iframe element
var embed_results = document.createElement('iframe');
embed_results.id = "myIframe";
embed_results.setAttribute("src", "http://www.mysite.com/syndication/php/embed.php");

// append to body
docBody.appendChild(embed_results);

// count the divs in iframe and alert   
alert(document.getElementById("myIframe").contentDocument.getElementsByTagName('div').length);

2 个答案:

答案 0 :(得分:7)

iFrame可以从其他域上的其他网站获取内容。

能够访问其他域上的内容会对用户造成安全漏洞,因此无法通过Javascript执行此操作。

因此,您无法将页面中的事件附加到iFrame中的内容。

答案 1 :(得分:3)

getElementsByTagName返回一个NodeCollection,因此您必须迭代此集合并将onclick处理程序添加到该集合中的每个节点。下面的代码应该有效。

var links = document.getElementById('myIframe').contentDocument.getElementsByTagName('a');
for(var i=0;i<links.length;++i)links[i].onclick=function(){}

还要确保在加载帧内容后运行此代码

embed_results.onload=function(){
   // your code
}