Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测iFrame中触发函数执行的单击(仅使用Javascript)_Javascript_Iframe - Fatal编程技术网

检测iFrame中触发函数执行的单击(仅使用Javascript)

检测iFrame中触发函数执行的单击(仅使用Javascript),javascript,iframe,Javascript,Iframe,这个主题已经讨论过好几次了,但是没有使用Javascript的明确解决方案。所有的反应都很模糊。请帮助我,因为我在任何网站上都找不到直接的答案 我试图在iframe窗口中发生任何单击时执行一个函数。具体来说,单击iframe中显示的页面上的超链接。不过,只要能够在iframe触发器中单击函数就足够了 我有一个函数Show(),我希望在单击iframe时运行该函数。所以基本上一个链接是自动隐藏的,当第一个链接被点击时,它就会显示出来。单击显示的“单击隐藏”链接时,“单击隐藏”链接将隐藏。当有人在i

这个主题已经讨论过好几次了,但是没有使用Javascript的明确解决方案。所有的反应都很模糊。请帮助我,因为我在任何网站上都找不到直接的答案

我试图在iframe窗口中发生任何单击时执行一个函数。具体来说,单击iframe中显示的页面上的超链接。不过,只要能够在iframe触发器中单击函数就足够了

我有一个函数Show(),我希望在单击iframe时运行该函数。所以基本上一个链接是自动隐藏的,当第一个链接被点击时,它就会显示出来。单击显示的“单击隐藏”链接时,“单击隐藏”链接将隐藏。当有人在iframe中单击时,我希望显示“单击隐藏”链接。我需要它在iframe中每次单击时运行函数。谢谢

代码:


堆栈溢出示例
.visible{可见性:visible}
.hidden{可见性:hidden}
var visible_link=true;
函数Hide(){
document.getElementById(“my_div”).className=“hidden”;
document.getElementById(“我的按钮”).value=“显示”;
}
函数Show(){
document.getElementById(“my_div”).className=“可见”;
document.getElementById(“我的按钮”).value=“隐藏”;
}

我强烈建议出于任何原因不要这样做,这通常被称为,这是一种非常糟糕的做法

所以。。。请不要这样做。

但出于教育目的。。。您可以使用另一个定位元素覆盖iframe,并捕获对该元素的单击:

var-visible\u-link=true;
函数Hide(){
document.getElementById(“my_div”).className=“hidden”;
document.getElementById(“我的按钮”).value=“显示”;
}
函数Show(){
document.getElementById(“my_div”).className=“可见”;
document.getElementById(“我的按钮”).value=“隐藏”;
}
。可见{
可见性:可见
}
.隐藏{
可见性:隐藏
}
#掩护{
位置:绝对位置;
背景:rgba(0,0,0,0.5);/*例如添加*/
高度:150像素;
宽度:300px;
}

我找到了一个解决方案。它并不完美,但我发现我并不需要它来检测每一个iframe点击,这已经足够好了。我最初希望,如果单击了iframe中页面内的链接(这会将用户返回到iframe中他们开始的主页),则会显示一个后退按钮。很明显,他们可能会随机点击,而不会点击超链接,并且返回链接会无缘无故地弹出(当他们仍在主页上时)。我想那很好,但如果有人知道更好的解决方案,请告诉我。大多数人一开始都会点击一个链接,因为我猜这个页面只有超链接交互

我希望我下面的工作代码能帮助将来探索这个话题的人

代码:


堆栈溢出示例
.visible{可见性:visible}
.hidden{可见性:hidden}
}
var visible_link=true;
var-inIframe=false;
函数Hide(){
document.getElementById(“my_div”).className=“hidden”;
document.getElementById(“我的按钮”).value=“显示”;
}
函数Show(){
document.getElementById(“my_div”).className=“可见”;
document.getElementById(“我的按钮”).value=“隐藏”;
}
函数checkClick(){
if(document.activeElement
&&document.activeElement==document.getElementById(“hello”)){
如果(inIframe==false){
Show();
inIframe=真;
}
}否则
inIframe=false;
}
设置间隔(点击复选框,200);

如果iframe位于不同的域中,则适用同一来源策略。您不能触摸iframe,因为它来自不同的域。您拥有iframe中的页面吗?回答apaul34208(第一个问题):iframe中的页面始终是我自己的web托管空间中我自己编写的页面。@Bergo在这种情况下,我尝试了此解决方案,但遇到两个问题:1)div不透明。2) 使用div,用户无法单击iframe中网页上的任何内容。我可能做错了什么。有人能把你觉得有用的代码全部粘贴上去吗?