use*_*330 14 javascript iframe jquery
我想在一个点击事件中添加一个iframe.我用这个例子得到了这个:
$(document).ready(function () {
$('#left').bind('click', function(event) { alert('test'); });
});
<iframe src="left.html" id="left">
</iframe>
Run Code Online (Sandbox Code Playgroud)
但遗憾的是没有任何反应.
当我用另一个元素(例如一个按钮)测试它时,它可以工作:
<input type="button" id="left" value="test">
Run Code Online (Sandbox Code Playgroud)
Chr*_*phe 31
您可以将点击附加到iframe内容:
$('iframe').load(function(){
$(this).contents().find("body").on('click', function(event) { alert('test'); });
});
Run Code Online (Sandbox Code Playgroud)
注意:这仅在两个页面位于同一域中时才有效.
现场演示:http://jsfiddle.net/4HQc4/
Rok*_*jan 19
两种解决方案
:after一对.iframeWrapper元素pointer-events:none;一个iframe:after相当简单.iframe包装器有一个:after(透明)伪元素和更高的z-index - 这将有助于包装器注册点击:
jQuery(function ($) { // DOM ready
$('.iframeWrapper').on('click', function(e) {
e.preventDefault();
alert('test');
});
});Run Code Online (Sandbox Code Playgroud)
.iframeWrapper{
display:inline-block;
position:relative;
}
.iframeWrapper:after{ /* I have higher Z-index so I can catch the click! Yey */
content:"";
position:absolute;
z-index:1;
width:100%;
height:100%;
left:0;
top:0;
}
.iframeWrapper iframe{
vertical-align:top;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="iframeWrapper">
<iframe src="http://www.reuters.tv/" frameBorder="0"></iframe>
</div>Run Code Online (Sandbox Code Playgroud)
pointer-events:none;点击不能从外部资源的iframe 外部处理(如果iframe不在您的域中).
您只能在"调入iframe"页面中创建该功能,而不能在iframe托管页面内创建.
怎么做:
iframe成一个diviframe使用的CSSpointer-events:none;jQuery包裹DIV(iframe父元素)jQuery(function ($) { // DOM ready
$('.iframeWrapper').on('click', function(e) {
e.preventDefault();
alert('test');
});
});Run Code Online (Sandbox Code Playgroud)
.iframeWrapper{
display:inline-block;
position:relative;
}
.iframeWrapper iframe{
vertical-align:top;
pointer-events: none; /* let any clicks go trough me */
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="iframeWrapper">
<iframe src="http://www.reuters.tv/" frameBorder="0"></iframe>
</div>Run Code Online (Sandbox Code Playgroud)
NOTA BENE:
pointer-events:| 归档时间: |
|
| 查看次数: |
79871 次 |
| 最近记录: |