如何使用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);
答案 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
}