套用;onclick";到iFrame中的所有元素

套用;onclick";到iFrame中的所有元素,iframe,onclick,Iframe,Onclick,如何使用JavaScript DOM将onclick事件应用于iframe内部的链接 以下是我正在尝试的不起作用的东西: document.getElementById('myIframe').contentDocument.getElementsByTagName('a').onclick = function(); 似乎没有抛出错误,我完全控制了iframe中的内容 // access body var docBody = document.getElementsByTagName("bo

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

以下是我正在尝试的不起作用的东西:

document.getElementById('myIframe').contentDocument.getElementsByTagName('a').onclick = function();
似乎没有抛出错误,我完全控制了
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);
下面是一些要测试的代码,看看我是否能够至少计算出我的
iframe
中有多少
div

// 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);

iFrame可以从不同域上的另一个网站获取内容

能够访问其他域上的内容对用户来说是一个安全漏洞,因此不可能通过Javascript实现这一点


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

getElementsByTagName返回NodeCollection,因此您必须通过该集合进行迭代,并将onclick处理程序添加到该集合中的每个节点。下面的代码应该可以工作

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

你能修改iframe的页面内容吗?你能提供更多的代码,以便我们查找错误吗?我想看看触发此代码的上下文。检查此代码是否在加载框架内容后运行,而不是更早。正如Jon已经回答的,JavaScript安全策略不允许浏览器访问或修改来自其他域的页面内容。如果您在两个域上都控制iframe,则有可能-